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

Dan*_*ama 2 multilingual sitecore sitecore8 sitecore8.1

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

将此放在此处给其他有此问题的人.我没有在Google上找到针对此问题的具体解决方案,并且很幸运能够解决这个问题.希望这也可以帮助其他人.

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

Dan*_*ama 7

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

步骤1

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

Tree Fallback示例

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

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

在此输入图像描述

第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>
Run Code Online (Sandbox Code Playgroud)

回收应用程序池

第3步

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

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

我们可以在标准模板上应用这些设置,该设置将应用于继承它的所有项目

  1. 导航到标准模板
  2. 如果不存在,则创建标准值
  3. 设置"启用项目后备"选项

这将使我们90%的项目和领域工作,但有一个警告; 这仅适用于未从标准值继承其值的字段.

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

在此输入图像描述

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

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

  1. 修改Item上的字段,使其不从标准值OR继承:
  2. 在Item模板上创建标准值 - 它将从标准模板的标准值继承Enable Item Fallback选项
    1. 取消选中该选项并保存
    2. 重新选中选项并保存,以便它不再继承该设置
    3. 现在不会继承"启用项目后备"选项,它将适用.从标准值继承的项目上的字段现在将回退并呈现

注意:我认为这是一个错误,因为当您更改语言时,内容编辑器仍会将字段显示为从后备语言继承其内容,但是在您执行上述方法之一之前,内容不会在网站上呈现

评论

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