标签: sitecore7.5

为什么某些Sitecore内容不会被Solr索引?

我有一个使用Sitecore 7.5和Solr 4.7构建的网站.我注意到一个非常奇怪的现象,某些内容项目没有被索引.这是正在发生的事情.

我有一个名为"内容页面"的数据模板.使用此数据模板的大多数内容项目都位于/ sitecore/content/Home/Corporate中.这样的事情:

/sitecore/content/Home/Corporate/About-Us
/sitecore/content/Home/Corporate/Careers
/sitecore/content/Home/Corporate/Terms-Of-Use
Run Code Online (Sandbox Code Playgroud)

我创建的一些测试项目存在于/ sitecore/content中,如下所示:

/sitecore/content/Test-1
/sitecore/content/Test-2
Run Code Online (Sandbox Code Playgroud)

所有这些页面都是使用"内容页面"数据模板构建的.重建索引然后转到Solr UI并执行查询后,我找不到Home节点下面的任何项目.当我查询_templatename:"内容页面"时 - 我只在结果中获得Test-1和Test-2.有谁知道为什么会发生这种情况?这真的很奇怪.我从未见过Solr根本没有索引某些物品的东西.它似乎基于它们在内容树中的位置.

sitecore solr4 sitecore7.5

37
推荐指数
1
解决办法
1117
查看次数

如何使用部分语言回退正确索引Solr中的Sitecore 7内容?

我有一个使用Solr 4.7作为搜索引擎的Sitecore 7.5站点.它很棒.这是一个多语言网站.我也在使用Alex Shyba编写的Partial Language Fallback模块.我已将其改编为与Sitecore 7.5配合使用,效果很好.我无法弄清楚的最后一部分是如何让Solr搜索与部分语言回退一起使用.我猜我需要做的是以某种方式在索引时我需要索引所有语言的内容并根据需要从后备语言中提取字段值.所以我要说我有以下内容:

  • 该网站有4种语言(英语,西班牙语,法语,德语)
  • 联系我们页面,包含3个字段(标题,副标题,内容)
  • 联系我们页面有英文版本
  • 有一个西班牙语版本的"联系我们"页面,其中所有3个字段都用西班牙语填写
  • 联系我们页面的法语版本仅包含用法语填写的内容字段
  • 联系我们页面没有德语版本

Partial Language Fallback模块完美地处理了这种情况.无论当前的上下文语言是什么语言,我仍然可以看到"联系我们"页面和页面上的所有字段.

但我不确定我应该如何让Solr索引这个内容.我的猜测是,不知何故,我需要告诉Solr索引在所有4种语言中创建联系我们页面的完整索引,如果没有该语言的内容,则使用每个字段的英文内容.我在网上发现了一篇博文,展示了如何为Lucene做这个.但我不确定如何使用Solr做到这一点.有谁知道如何在Solr中处理这个问题?

solr sitecore sitecore7 sitecore7.5

16
推荐指数
0
解决办法
390
查看次数

Sitecore以编程方式访问布局定义

我想访问项目的布局定义,以便我可以访问添加到项目的渲染,然后访问附加到所述渲染的数据源.我似乎找不到办法做到这一点.我能做的最好的就是访问该__renderings字段,但后来我发现这将访问原始的渲染定义项,而不是存储在设计版面中的特定的数据源实例.

这是在Sitecore 7.5 MVC上

如果它有帮助,这就是我尝试做的事情:

// Get the default device
DeviceRecords devices = item.Database.Resources.Devices;
DeviceItem defaultDevice = devices.GetAll().Where(d => d.Name.ToLower() == "default").First();

// Get the rendering references for the default device
Sitecore.Data.Fields.LayoutField layoutField = item.Fields["__renderings"];
Sitecore.Layouts.RenderingReference[] renderings = layoutField.GetReferences(defaultDevice);

// Get the required renderings
RenderingItem headerRenderingItem = null;
RenderingItem aboutRenderingItem = null;

foreach (var rendering in renderings)
{
    if (rendering.Placeholder == "headerPlaceholder")
        headerRenderingItem = rendering.RenderingItem;
    else if (rendering.Placeholder == "/aboutSectionPlaceholder/textPlaceholder")
        aboutRenderingItem = rendering.RenderingItem;
}
Assert.IsNotNull(headerRenderingItem, "no header rendering …
Run Code Online (Sandbox Code Playgroud)

c# sitecore sitecore7.5

6
推荐指数
1
解决办法
3421
查看次数

Sitecore PageEditor随机显示Glass.Mapper的错误

当我使用Glass.Mapper在我的Sitecore站点上以页面编辑器模式打开页面时,我有时会收到错误.

您不能保存不包含表示项ID的属性的类.确保至少有一个属性已标记为包含Sitecore ID.在Glass.Mapper.Sc.GlassHtml.MakeEditable [T]中的Glass.Mapper.Sc.Configuration.SitecoreTypeConfiguration.ResolveItem(对象目标,数据库数据库)输入:Castle.Proxies.IBasicPageProxy(Expression'1字段,Expression'1 standardOutput, T模型,对象参数,上下文上下文,数据库数据库,TextWriter编写器)

这出现在渲染的位置,因此它不会显示为标准ASP错误.

重新启动IIS解决了这个问题,但很快又出现了..

我使用接口进行模型定义,每个接口继承自IBaseType:

[SitecoreType]
public interface IBaseType
{
    [SitecoreId]
    Guid Id { get; set; }

    [SitecoreInfo(SitecoreInfoType.Name)]
    string Name { get; set; }

    [SitecoreItem]
    Item InnerItem { get; set; }

    [SitecoreInfo(SitecoreInfoType.Url)]
    string Url { get; set; }

    [SitecoreInfo(SitecoreInfoType.TemplateId)]
    Guid TemplateId { get; set; }

    [SitecoreInfo(SitecoreInfoType.FullPath)]
    string FullPath { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我使用Sitecore 7.5 rev.141003(.NET 4.5,MVC5),以及最新版本的Glass.Mapper相关NuGet包目前:

  • Castle.Windsor 3.3.0
  • Castle.Core 3.3.3
  • Glass.Mapper 3.0.14.26
  • Glass.Mapper.Sc 3.2.3.46
  • Glass.Mapper.Sc.CastleWindsor 3.3.0.24
  • Glass.Mapper.Sc.Mvc-5 3.3.0.43

问题出现在我们尝试的所有计算机上,但它们都使用Windows 8,IIS 8.5.9600.我尝试恢复到WebActivator方法,但它没有帮助.模型定义位于单独的类库项目中,该项目引用所有玻璃映射器程序集.

我很无能,在其他项目之前从未遇到过这个错误.有没有人知道是什么原因导致的,或者我如何调试它?

谢谢您的帮助!

asp.net-mvc sitecore glass-mapper sitecore7.5

5
推荐指数
1
解决办法
1508
查看次数

Sitecore 7.5 MVC和HttpContext.Session.Timeout设置为1分钟

我将会话超时设置为20分钟但是当我尝试从操作中访问此值时,我得到了1分钟.

Web.Config设置是:

<sessionState mode="InProc" cookieless="false" timeout="20">

<authentication mode="None">
  <forms name=".ASPXAUTH" cookieless="UseCookies" timeout="20" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

在Global.asax.cs中,Session_Start的超时值为20min:

HttpContext.Current.Session.Timeout
Run Code Online (Sandbox Code Playgroud)

但在我的控制器中的操作设置为1分钟:

System.Web.HttpContext.Current.Session.Timeout 
HttpContext.Session.Timeout
Run Code Online (Sandbox Code Playgroud)

我发现当我从web.config中删除SitecoreHttpModuletype(Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus)时,超时工作正常,但我不认为我可以永久删除它.

 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule"/>
      <add type="Sitecore.Web.RewriteModule, Sitecore.Kernel" name="SitecoreRewriteModule"/>
      <!-- !!!REMOVED MODULE!!! <add type="Sitecore.Nexus.Web.HttpModule,Sitecore.Nexus" name="SitecoreHttpModule"/> -->
      <add type="Sitecore.Resources.Media.UploadWatcher, Sitecore.Kernel" name="SitecoreUploadWatcher"/>
      <add type="Sitecore.IO.XslWatcher, Sitecore.Kernel" name="SitecoreXslWatcher"/>
      <add type="Sitecore.IO.LayoutWatcher, Sitecore.Kernel" name="SitecoreLayoutWatcher"/>
      <add type="Sitecore.Configuration.ConfigWatcher, Sitecore.Kernel" name="SitecoreConfigWatcher"/>
      ...
    </modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

有没有我可以为此模块配置此超时的地方,还是有其他方法可以将会话超时设置为所需的值?

asp.net-mvc session sitecore sitecore7 sitecore7.5

5
推荐指数
1
解决办法
2374
查看次数

使用Sitecore()格式化Sitecore日期.字段()?

我需要使用自定义格式的日期(即dddd dd MMMM yyyy).是否可以将此格式传递给Sitecore().Field()?我想做这样的事情:

@Html.Sitecore().Field("Day1", new { @format="dddd dd MMMM yyyy"})

然而,经过一些谷歌搜索,我发现我要么创建一个自定义字段助手来做这个或自定义模型.使用基本Sitecore真的没办法做到这一点吗?这很重要,Sitecore().Field()因为我需要内容编辑器才能编辑值.

我们在Sitecore 7.5上

c# sitecore sitecore7 sitecore7.5

5
推荐指数
1
解决办法
5141
查看次数

是否可以将查询用作使用Glass Mapper进行Sitecore渲染的数据源?

我正在使用Sitecore 7.5和Glass Mapper 3.2.3构建一个站点.当我将子布局添加到页面的演示文稿详细信息时,Glass Mapper将假定子布局的数据源应该是当前页面.我还可以通过在演示文稿详细信息对话框中选择站点上的其他页面来显式设置渲染的数据源.

在此输入图像描述

Glass Mapper仍然可以正常工作,并使用其他选定的页面作为渲染的数据源.但是,如果我尝试使用"构建查询"对话框并为我的数据源构建查询,Glass Mapper似乎忽略了这一点,只使用当前页面作为数据源.有没有办法使用我使用Build Query对话框构建的查询?

在此输入图像描述

编辑:这里有一些关于我的设置的更多信息.我在Sitecore中有一个名为ContentPage的数据模板.它有一个字段:内容.我在网站中有多个页面使用此数据模板.我有一个名为sublayoutPageContent的子布局.它继承自GlassUserControl.它只是显示内容字段.如果我将此子布局添加到页面A的演示文稿详细信息中,并且不指定数据源,则它可以正常工作.当我调出页面A时,它会完美地显示页面A中的内容字段.我还可以查看子布局的演示文稿详细信息,并告诉它使用不同的页面作为数据源 - 比如页面B.如果我这样做,然后我去查看页面A,我将看到页面B中的内容字段太棒了 - 这是按预期工作的.现在,而不是选择数据源的页面,

sitecore sitecore7 glass-mapper sitecore7.5

4
推荐指数
1
解决办法
1303
查看次数

Sitecore TDS代码生成错误

我试图通过遵循GlassTutorial24 TDS版本:5.1.0.3,visual studio 2012 从TDS代码生成生成代码.

生成的类只有"ErrorGeneratingOutput".

我的项目属性如下: TDS项目属性

编辑1:

构建时出错:

错误1编译转换:无法找到元数据文件'HedgehogDevelopment.CodeGeneration.Extensions.dll'xxx.TDS.Master \代码生成模板\ glassv3header.tt

错误2编译转换:类,结构或接口成员声明中的令牌"this"无效xxx.TDS.Master \代码生成模板\ GlassV3Item.tt

错误3编译转换:方法必须具有返回类型xxx.TDS.Master \代码生成模板\ GlassV3Item.tt

错误4编译转换:键入expected xxx.TDS.Master\Code Generation Templates\GlassV3Item.tt

code-generation sitecore glass-mapper sitecore7.5

4
推荐指数
1
解决办法
2819
查看次数

如何为 Sitecore 实现向 Solr 索引中的 _content 字段添加文本?

这是针对 Sitecore 7.5 - Solr 4.7 实现的。我希望能够修改存储在 Solr 的 _content 字段中的文本。我相信,Sitecore 以某种方式聚合了索引中 _content 字段中某个项目的所有内容字段。(我认为这是正确的)在索引时,我希望能够编写自己的代码,该代码可能会修改存储在 Solr 的 _content 字段中的文本。这可能吗?任何想法我会怎么做?

indexing sitecore solr4 sitecore7.5

3
推荐指数
1
解决办法
1526
查看次数

从 JavaScript (MVC) 调用 Sitecore 控制器方法

我有一个具有功能的控制器ShowEvents(EventCategory eventCategory)。是否可以从客户端 JavaScript 调用此函数?我知道我可以使用Sitecore.Services.Client (SCC)从数据库中检索项目,但是是否可以实际访问方法?也许通过控制器渲染,如果可能的话?

这是我要调用的方法的示例:

public class EventListController : Controller
{
    public ActionResult ShowEvents(EventCategory eventCategory)
    {
        var repository = new EventListRepository();
        var eventPages = repository.GetEvents(eventCategory);
        var eventListViewModel = repository.GetEventListViewModel(eventPages);

        return View("/Some/Path/, eventListViewModel);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是在 Sitecore 7.5 MVC 上

javascript c# asp.net-mvc sitecore sitecore7.5

3
推荐指数
1
解决办法
2431
查看次数

Sitecore HOWTO:搜索具有特定值的项目的项目桶

我有一个物品桶里面有超过30 000个物品.我需要的是快速搜索具有特定字段设置为特定值的项目,或者更好的是制作类似SELECT WHERE fieldValue IN(1,2,3,4)语句的内容.有没有现成的解决方案?我在网上搜索过,我发现的唯一一件事是"项目桶和搜索的开发人员指南",但没有代码示例.

search sitecore bucket sitecore7 sitecore7.5

2
推荐指数
2
解决办法
4426
查看次数

获取Sitecore中的媒体库项目的内容

使用Sitecore 7.5,我试图在媒体库中存储几个html文件.然后在我的子布局代码隐藏中,我试图抓住那些html文件的内部内容.

当我在服务器上存储html文件时,我有这个工作.我会使用"上传为文件"将文件上传到媒体库,然后使用以下代码阅读内容:

string filename = htmlMediaItem.Fields["File Path"].ToString();
string path = Server.MapPath(filename);
string content = System.IO.File.ReadAllText(path);
Run Code Online (Sandbox Code Playgroud)

但是我现在想要这样做而不将文件存储在服务器上,而只是将它们放在媒体库中.无论如何我能做到吗?

到目前为止,我一直很难找到有关该主题的信息.

谢谢.

c# sitecore sitecore7.5

2
推荐指数
1
解决办法
4391
查看次数

如何在My Local Machine中的一个Sitecore实例中设置多个站点(多域站点)?

我一直在尝试在本地实例中配置多个具有多个域的站点.

Sitecore内容树

Sitecore
   -> Content
      -> Home
      -> PublicHome
Run Code Online (Sandbox Code Playgroud)

我有以下web.config设置.

<site name="website" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" startItem="/home" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false"/>

<site name="PublicHome" hostName="my.public.com" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" startItem="/PublicHome" language="en" database="web" domain="extranet" />
Run Code Online (Sandbox Code Playgroud)

我创建了几个主机文件条目.

127.0.0.1 My.Sitecore.com

127.0.0.1 my.public.com

My.Sitecore.com - 加载主页.

但my.public.com没有按预期加载.

未在IIS站点中设置绑定时.我正在获取IIS默认站点.

一旦我在IIS站点上添加绑定.我得到了"Home"而不是"PublicHome".

版本信息:Sitecore 7.5,Windows 10中的IIS

iis web-config sitecore sitecore7.5

0
推荐指数
1
解决办法
1274
查看次数