【问题标题】:Language Fallback not working for Fields with Standard Values (Sitecore 8.1)语言回退不适用于具有标准值的字段(Sitecore 8.1)
【发布时间】:2019-07-20 02:04:14
【问题描述】:

我们遇到了一个问题,即我们在基本模板的项目级别启用了后备语言设置,以便它适用于我们的所有项目。它适用于我们大约 90% 的项目,但不适用于其他项目,即使 sitecore 内容编辑器表明它有效。

为遇到此问题的其他人提供此信息。我没有找到具体的 谷歌上这个问题的解决方案,很幸运能弄清楚。希望这也可以帮助其他人。

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

【问题讨论】:

    标签: sitecore multilingual sitecore8 sitecore8.1


    【解决方案1】:

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

    第 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 步

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

    1. 导航到站点核心内容编辑器中的项目并查看“高级”部分
    2. 如果高级部分不可见;选择查看选项卡并检查标准字段选项
    3. 选中启用项目后备选项。 (如果不存在语言版本,则显示备用语言的项目)
    4. 要将页面限制为某种语言,请选中“强制版本存在”选项。 如果找不到特定语言的版本,Sitecore 的默认行为是返回一个空项目。呈现项目或尝试通过 Sitecore API 访问项目时会发生这种情况。 如果没有适用于所请求语言的版本,此选项可让您告诉 Sitecore 不要退回项目。这最终会将用户重定向到 404(未找到)页面,或者在尝试通过 API 获取项目时返回 NULL。

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

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

    这将使我们 90% 的项目和字段正常工作,但是有一个警告;这仅适用于不从标准值继承其值的字段。

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

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

    要在这种情况下处理字段/项目,您需要做以下两件事之一:

    1. 修改项目上的字段,使其不继承标准值 或者:
    2. 在项目模板上创建标准值 - 它将从标准模板的标准值继承启用项目后备选项
      1. 取消选中该选项并保存
      2. 重新检查选项并保存,使其不再继承设置
      3. 现在启用项目后备选项没有被继承,它将适用。项目上从标准值继承的字段现在将回退并呈现

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

    评论

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

    【讨论】:

    【解决方案2】:

    我遇到了类似的问题,这就是原因。

    在我的例子中,我有一个从另一个数据源模板 DMother 继承的数据源模板 DChild。 DChild 和 DMother 都有标准值

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

    这是因为回退未在 DChild 标准值中启用,但在 DMother 标准值中启用。

    很棘手吧?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多