7

有没有人有将__RenderingsSitecore 中的字段设置为不共享的经验?我们正在构建一个多站点多语言解决方案,并且需要(子)布局在不同语言中有所不同。例如,英语站点可能有一个子布局,而瑞典语版本的同一项目没有,并且所有演示组件并不总是具有不同语言的相同数据源。

一个稍微简单的解决方案是简单地取消选中__Renderings字段中的“共享” /sitecore/templates/System/Templates/Sections/Layout template,但这是否有任何其他后果?还是有更好的方法来处理这个要求?

4

4 回答 4

5

当需要基于语言、原籍国等交换视觉元素时,我自己的偏好是使用 Sitecore 的个性化规则编辑来交换数据源并以这种方式更改呈现方式。它不涉及更改 Sitecore 的默认行为,并允许您利用内置的 Sitecore 功能。

如果您的不同“子布局”实际上只是各种个性化规则引入的数据源,您可以使用 OMS/DMS 配置所有这些,并依靠 Sitecore 引擎在当前状态下呈现您需要的组件。就性能而言,使用最新版本的 DMS 可能是最好的(我相信 6.5 Update 5 现在是推荐的版本)。

于 2012-08-22T13:05:21.217 回答
2

我们确实做到了这一点,而且在大多数情况下几乎没有副作用。事实上,这是获得 __Renderings 更改工作流的唯一方法。我们将它与部分语言后备相结合,以便语言可以继承英语的价值。但是要小心,就像一个项目被克隆一样,它总是会首先从克隆中提取其默认值,而不是标准值/回退。

于 2012-08-22T18:58:37.007 回答
2

以这种方式修改 Sitecore 的默认行为通常不是一个好主意。对于将来可能使用该系统的其他人来说,这不是透明的,并且可能导致意想不到的结果。

Imo,最好在(子)布局内进行切换,以便根据当前语言加载不同的文件。

至于后果。当您将 _Renderings 字段设为非共享时,它将按预期工作。您将能够为每个语言版本设置不同的演示详细信息。结果是您现在必须为每个语言版本设置它......所以它不太容易管理。

于 2012-08-22T09:59:32.903 回答
1

我会改为使用 sitecore 的设备。对于每种语言,您都可以定义一个站点,每个站点都可以有自己的设备。如果您为每种语言(www.site.com、www.site.de、www.site.fr 等)拥有一个域名,这将是开箱即用的。

如果您有一个适用于所有语言的站点(一个主机名),则可以使用 httpRequestBegin 管道处理器切换设备。

这篇文章http://briancaos.wordpress.com/2012/04/12/identifying-mobile-devices-in-sitecore/描述了如何识别移动设备。重写逻辑以根据语言切换设备并不难。

当您为每种语言定义了不同的设备时,您只需将渲染放置在与您的语言匹配的设备上。对于所有渲染都相同的所有页面,您仍然可以使用备用设备。

修改 Sitecore 默认行为目前可能可行,但使用和扩展 Sitecore 平台是一种更好的前进方式。

于 2012-08-22T11:02:52.020 回答