在Sitecore 6.4中按主机名更改内容和演示文稿

在Sitecore 6.4中按主机名更改内容和演示文稿,sitecore,sitecore6,Sitecore,Sitecore6,情景: 内容树的一部分是在两个主机名(www.site1.com和www.site2.com)下运行的站点的主项 这两个主机名的目的是区分提供相同内容的两个目标国家和同一组织(营销部门、网络编辑等) 当然,两个主机名的内容是相同的 除了 在一些地方,我们需要一些小的差异。例如,一封联系电子邮件或一份法律通知(它们都只是Sitecore内容)。在其他地方,我们可能希望能够根据项目所在的主机上下文更改项目的演示组件。我们可能希望在特定模板中的所有项目中执行此操作 使事情复杂化的是,该网站已经从另一个

情景: 内容树的一部分是在两个主机名(www.site1.com和www.site2.com)下运行的站点的主项

这两个主机名的目的是区分提供相同内容的两个目标国家和同一组织(营销部门、网络编辑等)

当然,两个主机名的内容是相同的

除了

在一些地方,我们需要一些小的差异。例如,一封联系电子邮件或一份法律通知(它们都只是Sitecore内容)。在其他地方,我们可能希望能够根据项目所在的主机上下文更改项目的演示组件。我们可能希望在特定模板中的所有项目中执行此操作

使事情复杂化的是,该网站已经从另一个网站(www.siteA.com)克隆而来,该网站是几个克隆(一些已翻译)的来源针对不同的国家/地区。这是为了使我们能够将新项目/内容更改/功能推送到我们的子公司。因此,所有模板和演示组件都已在许多主机上下文和内容树的许多部分中共享


是否有任何Sitecore功能可以实现/简化此功能?或者我们是否需要将上下文测试编码到演示组件中(可能与Sitecore中的一些配置项一起,以避免硬编码值)?

这是一个很好的问题。这是一个很长的目标,但它可能会起作用:

为什么不为Site2创建一个新设备?如果Site2演示文稿数据需要更改,请配置Site2设备的演示文稿设置。如果不需要,请不要设置这些设置,默认设备将呈现内容。此处的难点是配置设备的解析方式。也许可以创建自定义设备解析管道中的lver:

<processor type="Sitecore.Pipelines.HttpRequest.BeginDiagnostics, Sitecore.Kernel"/>
<!--<processor type="Sitecore.Pipelines.HttpRequest.DeviceResolver, Sitecore.Kernel"/>-->
<processor type="YourProject.Pipelines.HttpRequest.DeviceResolver, YourProject"/>
<processor type="Sitecore.Pipelines.HttpRequest.LanguageResolver, Sitecore.Kernel"/>

在处理器中,您可以查看主机以确定使用哪个

您还可以在新的
节点上定义Site2设备,如Paul在下面提到的。类似如下:

<site name="site1" hostName="site1.com" rootPath="/sitecore/content" startItem="/home" ... />
<site name="site2" hostName="site1.com" device="Site2" rootPath="/sitecore/content" startItem="/home" ... />


Site1和Site2都指向树的相同部分,它们只是使用不同的设备。

要扩展标记回答:请注意,您可以在web.config中设置site元素的“device”属性,这将为其他站点提供一个已定义的备用设备。这也意味着您不需要自定义设备解析程序?Brilliant、 正是我想要的。谢谢你们两个。