2012-08-22 1 views
6

У кого-нибудь есть опыт в настройке поля __Renderings в Sitecore для совместного использования? Мы создаем многоязычное многоязычное решение и должны (макеты) быть разными на разных языках. Например, сайт на английском языке может иметь подъярус, который не имеет шведской версии одного и того же элемента, и все компоненты презентации не всегда имеют один и тот же источник данных для разных языков.Настройка Поле __Renderings, не переданное в результате Sitecore?

Несколько простых решений для этого было бы просто снять флажок «совместно» на поле __Renderings в /sitecore/templates/System/Templates/Sections/Layout template, но имеет ли это какие-либо другие последствия? Или есть лучший способ справиться с этим требованием?

+1

Одним из основных недостатков является то, что вы изменяете шаблон системы sitecore, который не поддерживается. Это затруднит будущие обновления. –

+0

В дополнение к вашему языковому примеру существует также прецедент для различной презентации между версиями элементов. Например, изменение источника данных при рендеринге между версиями 1 и 2 или просто изменение порядка сортировки рендеринга. Это невозможно, если «общий» отмечен. –

ответ

2

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

Imo, лучше сделать переключатель внутри (под) макетов, чтобы он загружал разные файлы на основе текущего языка.

Что касается последствий. Он будет работать так, как вы ожидаете, когда поле _Renderings не будет разделено. Вы сможете установить различные данные презентации для каждой языковой версии. Следствием этого является то, что вы должны теперь установить его для каждой языковой версии ... так что это будет менее легко управлять.

+0

Я бы предпочел управлять этим с Sitecore, а не с кода. То, что я хочу выполнить, состоит в том, чтобы иметь отдельный элемент, который может иметь разные подзадачи в зависимости от языка, или сортировать подслои по-разному на один язык. Каждый подъярус может также иметь другой источник данных в зависимости от языка. У англичан могут быть не такие же подъязыки, как у шведского. Кроме того, это нужно редактировать с помощью Редактора страниц. – andreasordell

1

Я бы вместо этого использовал Устройства sitecore. Для каждого языка вы можете определить сайт, и каждый сайт может иметь собственное устройство. Это будет работать готово, если у вас есть одно доменное имя для каждого языка (www.site.com, www.site.de, www.site.fr и т. Д.)

Если у вас есть один сайта (имя одного хоста) для всех языков, вы можете переключать устройства с помощью процессора конвейера httpRequestBegin.

В данной статье, http://briancaos.wordpress.com/2012/04/12/identifying-mobile-devices-in-sitecore/, описано, как идентифицировать мобильные устройства. Нетрудно переписать логику для переключения устройств в зависимости от языка.

Когда вы определили разные устройства для каждого языка, вы просто размещаете изображения на устройстве, соответствующем вашему языку. И у вас все еще есть возможность резервного устройства для всех тех страниц, где все визуализации одинаковы.

Модификация поведения по умолчанию Sitecore может работать, но использование и расширение платформы Sitecore является лучшим способом продвижения вперед.

+0

Это интересно! Хотя я не уверен, насколько это будет удобно для веб-редакторов, используя Sitecore Page Editor. Я посмотрю на это больше! – andreasordell

+0

Для сайта с 5 языками при добавлении нового общего компонента вы должны добавить его вручную на все 5 языков. Это потребует много дополнительной работы и тестирования. Я полагаю, это зависит от того, какой процент вашей структуры контента является общим. Если все равно, все может быть в порядке. – GeekyMonkey

5

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

Если ваши разные «подзадачи» на самом деле являются просто источниками данных, которые используются различными правилами персонализации, вы можете настроить все это с помощью OMS/DMS и полагаться на механизм Sitecore, чтобы представить компоненты, которые вам нужны, с учетом текущего состояния. Для производительности лучше всего использовать самую последнюю версию DMS (я считаю, что теперь рекомендуется обновление 5 Update 5).

+0

Использование DMS определенно может быть отличным вариантом. Также позволяет пользователю редактировать через Редактор страниц. Возможно, для простых пользователей может быть немного сложнее понять, как использовать персонализацию. Изменение сущности данных является ключевым аспектом, поскольку не все элементы имеют все языки и т. Д. Доступен ли параметр sc_lang для персонализации? – andreasordell

+0

Если вы раскрываете редактор правил при настройке компонента, вы можете увидеть большой список доступных условий/правил. Один из разделов, если для «Элементов», с правилом «где язык элемента сравнивается со значением». Существуют также правила для сайтов, а также персонажи. –

+0

Я бы сказал, что это «лучший способ справиться с требованием» и, следовательно, ответ на ваш вопрос. По моему опыту, путаться с Sitecore в том виде, который вы предлагаете, обязательно приведет вас к неприятностям. Может быть, не сейчас - я сам ее тестировал, и не так уж много серьезных побочных эффектов, но позже. –

1

Мы действительно сделали это, и по большей части есть несколько побочных эффектов. Фактически, это единственный способ получить рабочий процесс в изменениях __Renderings. Мы объединим его с Partial Language Fallback, чтобы языки могли наследовать значение с английского.Однако будьте осторожны, как будто объект клонирован, он всегда будет вытаскивать свое значение по умолчанию из клона сначала, а не стандартные значения/резерв.

Смежные вопросы