Откат языка не работает для полей со стандартными значениями (Sitecore 8.1)
У нас была проблема, из-за которой мы включили языковые параметры резервирования на уровне элемента в базовом шаблоне, чтобы он применялся ко всем нашим элементам. Это сработало примерно для 90% наших товаров, но не для других, хотя редактор контента sitecore указал, что он работает.
Размещение здесь для всех, кто имеет эту проблему. Я не нашел конкретного решения для этой проблемы в Google, и мне посчастливилось понять это. Надеюсь, это может помочь кому-то еще.
Наша установка - Sitecore 8.1 с Habitat Asp.net MVC
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
Теперь функция включена для сайта, мы должны включить функцию на уровне элемента.
- Перейдите к элементу в редакторе контента sitecore и просмотрите раздел Advanced.
- Если расширенный раздел не виден; выберите вкладку "Вид" и установите флажок "Стандартные поля"
- Отметьте опцию "Включить возврат элемента". (Отображает элемент с запасного языка, если языковой версии не существует)
- Чтобы ограничить страницу определенным языком, установите флажок Enforce Version Presence. В случаях, когда версия не найдена для определенного языка, по умолчанию Sitecore возвращает пустой элемент. Это происходит при рендеринге элемента или при попытке получить к нему доступ через API Sitecore. В тех случаях, когда нет версии, доступной для запрашиваемого языка, эта опция позволяет вам сказать Sitecore НЕ возвращать элемент. Это приведет к перенаправлению пользователя на страницу 404 (не найдено) или возврату NULL при попытке получить элемент через API.
Мы можем применить эти параметры к стандартному шаблону, и этот параметр будет применяться ко всем элементам, которые его наследуют.
- Перейдите к стандартному шаблону
- Создать Стандартные Значения, если не существует
- Установите опцию "Включить возврат элемента"
Это приведет к тому, что 90% наших предметов и полей будут работать, однако есть предостережение; это работает только для полей, которые не наследуют свои значения от стандартных значений.
Вы можете легко определить эти поля, просмотрев элемент в редакторе содержимого
Это связано с тем, что параметр "Включить откат элемента" также наследуется от стандартных значений стандартного шаблона, и Sitecore не будет применять этот параметр к полям, которые также наследуются от стандартных значений.
Для обработки полей / элементов в этом сценарии вы делаете одно из двух:
- Измените поле элемента, чтобы оно не наследовало от стандартных значений ИЛИ:
- Создайте стандартные значения в шаблоне элемента - он унаследует опцию "Включить резервный элемент" из стандартных значений стандартного шаблона.
- Снимите флажок с опции и сохраните
- Перепроверьте опцию и сохраните, чтобы она больше не наследовала настройки
- Теперь, когда опция Enable Item Fallback не наследуется, она будет применяться. Поля на элементе, которые наследуются от стандартных значений, теперь откатятся и отобразятся
Примечание: я считаю, что это ошибка, потому что редактор контента по-прежнему отображает поля как наследующие их контент от языка резервирования при смене языка, однако контент не отображается на веб-сайте, пока вы не выполните один из методов, упомянутых выше
Комментарии
- Есть также настройки уровня поля, чтобы применить те же настройки.
- Также стоит отметить, что если у вас возникла проблема выше и вы применили настройку на уровне поля, она все равно не будет работать, пока вы не выполните эти шаги выше.
Столкнулся с подобной проблемой, и вот почему.
В моем случае у меня есть шаблон источника данных DChild, который наследуется от другого шаблона источника данных DMother. И DChild, и DMother имеют стандартные значения.
Когда я создавал элемент из шаблона DChild, все поля, значения которых были установлены стандартными значениями DChild, имели свои языковые резервные значения, поступающие из стандартных значений DMother вместо стандартного значения DChild.
Это было вызвано тем, что откат не был включен в стандартных значениях DChild, но был включен в стандартных значениях DMother.
Сложно, да?