以下是通过将项目级别设置应用于基本模板来使语言回退适用于所有项目的一些步骤。
第 1 步
启用语言回退的第一步是设置回退树。
我们可以为语言建立一个层次结构(或简单的线性)来回退到
示例:
在我们的例子中,我们会这样做: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>
回收应用程序池
第 3 步
现在该功能已为网站启用,我们必须在项目级别启用该功能。
- 导航到站点核心内容编辑器中的项目并查看“高级”部分
- 如果高级部分不可见;选择查看选项卡并检查标准字段选项
- 选中启用项目后备选项。 (如果不存在语言版本,则显示备用语言的项目)
- 要将页面限制为某种语言,请选中“强制版本存在”选项。
如果找不到特定语言的版本,Sitecore 的默认行为是返回一个空项目。呈现项目或尝试通过 Sitecore API 访问项目时会发生这种情况。
如果没有适用于所请求语言的版本,此选项可让您告诉 Sitecore 不要退回项目。这最终会将用户重定向到 404(未找到)页面,或者在尝试通过 API 获取项目时返回 NULL。
我们可以在标准模板上应用这些设置,该设置将应用于所有继承它的项目
- 导航到标准模板
- 如果不存在则创建标准值
- 设置启用项目后备选项
这将使我们 90% 的项目和字段正常工作,但是有一个警告;这仅适用于不从标准值继承其值的字段。
您可以通过在内容编辑器中查看项目来轻松识别这些字段
这与启用项目后备选项如何也从标准模板的标准值继承有关,Sitecore 不会将该设置应用于同样从标准值继承的字段。
要在这种情况下处理字段/项目,您需要做以下两件事之一:
- 修改项目上的字段,使其不继承标准值
或者:
- 在项目模板上创建标准值 - 它将从标准模板的标准值继承启用项目后备选项
- 取消选中该选项并保存
- 重新检查选项并保存,使其不再继承设置
- 现在启用项目后备选项没有被继承,它将适用。项目上从标准值继承的字段现在将回退并呈现
注意:
我认为这是一个错误,因为当您更改语言时,内容编辑器仍将字段显示为从备用语言继承其内容,但是在您执行上述方法之一之前,内容不会在网站上呈现
评论
- 还有字段级设置可以应用相同的设置。
- 另外值得注意的是,如果您遇到上述问题并在字段级别应用设置,则在您执行上述步骤之前它仍然无法正常工作。