Языковой резерв не работает для полей со стандартными значениями (Sitecore 8.1)


У нас была проблема, когда мы включили резервные языковые настройки на уровне элемента в базовом шаблоне, чтобы он применялся ко всем нашим элементам. Он работал примерно для 90% наших элементов, но не для других, хотя редактор контента sitecore показал, что он работает.

Помещая это здесь для всех, кто имеет эту проблему. Я не нашел ничего конкретного. решение этой проблемы в Google, и был достаточно удачлив, чтобы выяснить это. Надеюсь, это поможет кому-то еще тоже.

Наша настройка-Sitecore 8.1 с Habitat Asp.net MVC

1 2

1 ответ:

Вот несколько шагов, чтобы сделать язык резервным для всех элементов, применяя настройки уровня элемента к базовому шаблону.

Шаг 1

Первым шагом для включения языкового отката является настройка дерева отката. Мы можем построить иерархическую структуру (или простую линейную) для языков, к которым можно вернуться Пример:

Пример запасного варианта дерева

В нашем случае мы бы просто сделали: EN-NZ --> EN

Это делается /Sitecore / System / Languages путем установки резервной копии язык на каждом из языковых узлов:

Введите описание изображения здесь

Шаг 2

Далее мы включаем функцию языкового отката для сайта. На развернутом веб-сайте найдите конфигурационный файл Sitecore.Языковой откат.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 и просмотрите раздел Advanced
  2. Если раздел "Дополнительно" не отображается; выберите вкладку " Вид "и установите флажок" стандартные поля "
  3. установите флажок Включить резервный вариант элемента. (Отображает элемент из резервного языка, если языковая версия не существует)
  4. чтобы ограничить страницу определенным языком, установите флажок принудительное присутствие версии. В тех случаях, когда версия не найдена для конкретного языка, По умолчанию Sitecore возвращает пустой элемент. Это происходит при рендеринге элемента или при попытке получить к нему доступ через Sitecore API. В тех случаях, когда нет версии, доступной для запрашиваемого языка, эта опция позволяет вам сказать Sitecore не возвращать элемент. Это приведет к перенаправлению пользователя на страницу 404 (не найдена) или возвращению значения NULL при попытке получить элемент через API.

Мы можем применить эти настройки к стандартному шаблону, и настройка будет применяться ко всем Элементы, которые наследуют его

  1. перейдите к стандартному шаблону
  2. создайте стандартные значения, если их не существует
  3. установите опцию Enable Item Fallback

Это позволит получить 90% наших элементов и полей, работающих, однако есть оговорка; это работает только для полей, которые не наследуют свои значения от стандартных значений.

Вы можете легко идентифицировать эти поля, просмотрев элемент в Редакторе содержимого

Введите описание изображения здесь

Это что-то связанное с тем, что опция включить резервный элемент также наследуется от стандартных значений стандартного шаблона, и Sitecore не будет применять этот параметр к полям, которые также наследуются от стандартных значений.

Для обработки полей / элементов в этом сценарии необходимо выполнить одно из двух действий:

  1. измените поле элемента таким образом, чтобы оно не наследовалось от стандартных значений Или:
  2. создайте стандартные значения в шаблоне элемента-он унаследует опцию Включить резервный элемент из стандартных значений стандартного шаблона
    1. снимите флажок и сохраните
    2. перепроверьте параметр и сохраните его, чтобы он больше не наследовал настройку
    3. Теперь, когда опция enable Item Fallback не наследуется, она будет применяться. Поля элемента, которые наследуются от стандартных значений, теперь будут резервными и отрисовывать

Примечание: Я считаю, что это ошибка, потому что редактор содержимого по-прежнему отображает поля как наследующие их содержимое от однако при изменении языка контент не отображается на веб-сайте, пока вы не выполните один из методов, упомянутых выше

Комментарии

  • есть также настройки уровня поля для применения той же настройки.
  • также стоит отметить, что если вы столкнулись с проблемой выше и применяете настройку на уровне поля, она все равно не будет работать, пока вы не выполните эти шаги выше.