语言后备不适用于具有标准值的字段(Sitecore 8.1)

时间:2016-09-20 04:05:28

标签: sitecore multilingual sitecore8 sitecore8.1

我们遇到了一个问题,我们在基本模板上的项目级别启用了后备语言设置,以便它可以应用于我们的所有项目。虽然sitecore内容编辑器表明它正在运行,但它对我们大约90%的项目起作用,但对其他项目则没有。

将此文件放在此处,以解决此问题。我没找到具体的 谷歌解决这个问题的解决方案,很幸运能够解决这个问题。希望这也可以帮助其他人。

我们的设置是Sitecore 8.1与Habitat Asp.net MVC

2 个答案:

答案 0 :(得分:6)

以下是通过将项目级别设置应用于基本模板,使语言回退适用于所有项目的一些步骤。

第1步

启用语言回退的第一步是设置回退树。 我们可以构建一个层次结构(或简单的线性),以便语言可以回归 示例:

Tree Fallback example

在我们的案例中,我们会这样做:EN-NZ - > EN

通过在每个语言节点上设置后备语言来完成/ Sitecore / System / Languages:

enter image description here

第2步

接下来,我们为网站启用语言后备功能。 在已部署的网站上,找到配置文件 Sitecore.LanguageFallback.config 并修改配置以适用以下设置:

<setting name="LanguageFieldFallback.AllowVaryFallbackSettingsPerLanguage" value="true" />
…
<sites>
      <site name="shell">
        <patch:attribute name="enableItemLanguageFallback">true</patch:attribute>
        <patch:attribute name="enableFieldLanguageFallback">true</patch:attribute>
      </site>
      <site name="website">
        <patch:attribute name="enableItemLanguageFallback">true</patch:attribute>
        <patch:attribute name="enableFieldLanguageFallback">true</patch:attribute>
        <patch:attribute name="enforceVersionPresence">true</patch:attribute>
      </site>
    </sites>

回收应用程序池

第3步

现在为网站启用了该功能,我们必须在项目级别启用该功能。

  1. 导航到sitecore内容编辑器中的项目并查看“高级”部分
  2. 如果“高级”部分不可见;选择“视图”选项卡,然后选中“标准字段”选项
  3. 选中“启用项目后备”选项。 (如果不存在语言版本,则显示来自后备语言的项目)
  4. 要将页面限制为某种语言,请选中“强制版本存在”选项。 如果找不到特定语言的版本,Sitecore的默认行为是返回空项。在渲染项目或尝试通过Sitecore API访问它时会发生这种情况。 如果没有可用于所请求语言的版本,则此选项允许您告知Sitecore NOT不返回项目。这将最终将用户重定向到404(未找到)页面,或者在尝试通过API获取项目时返回NULL。
  5. 我们可以在标准模板上应用这些设置,该设置将应用于所有继承它的项目

    1. 导航至标准模板
    2. 如果不存在则创建标准值
    3. 设置启用项目后备选项
    4. 这将使我们90%的物品和领域工作,但有一个警告;这仅适用于未从标准值继承其值的字段。

      您可以通过在内容编辑器中查看项目来轻松识别这些字段

      enter image description here

      这与“启用项目后备”选项如何继承标准模板的标准值有关,而Sitecore不会将设置应用于也从标准值继承的字段。

      要处理此方案中的字段/项目,您可以执行以下两项操作之一:

      1. 修改Item上的字段,使其不从标准值继承 OR:
      2. 在Item模板上创建标准值 - 它将从标准模板的标准值继承Enable Item Fallback选项
        1. 取消选中该选项并保存
        2. 重新检查选项并保存,以便它不再继承设置
        3. 现在不会继承“启用项目后备”选项,它将适用。从标准值继承的项目上的字段现在将回退并呈现
      3. 注意: 我相信这是一个错误,因为当您更改语言时,内容编辑器仍会将字段显示为从后备语言继承其内容,但是在您执行上述方法之一之前,内容不会在网站上呈现

        <强>评论

        • 还有字段级设置可应用相同的设置。
        • 另外值得注意的是,如果您遇到上述问题并在字段级别应用该设置,则在您执行上述步骤之前仍然无效。

答案 1 :(得分:0)

我遇到了类似的问题,这就是为什么。

就我而言,我有一个数据源模板DChild,它从另一个数据源模板DMother继承。 DChild和DMother都具有标准值

当我从DChild模板创建项目时,其值由DChild的标准值设置的所有字段的语言回退值均来自DMother标准值,而不是DChild标准值。

这是由于未在DChild标准值中启用回退,而在DMother标准值中启用了后退。

棘手的吧?