Почему компонент представления sitecore может производить разные выходные данные в зависимости от домена? - PullRequest
1 голос
/ 23 февраля 2012

Поскольку я не могу опубликовать код, я задаю это как теоретический вопрос, но даю сценарий.

У меня есть подслой "newsroom", который статически связывает пару XSLT для отображения последних новостей и последних событий. Подслой используется в элементе новостей, события и новости являются его потомками (хотя это и не прямые дочерние элементы, существует несколько слоев папок для классификации и датирования элементов).

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

Однако наш самый последний клон (турецкий) не отображает никаких элементов в списке событий или новостях. Элементы существуют, публикуются и отображаются, как ожидается, при просмотре по отдельности.

Детали представления для элемента редакции идентичны всем остальным элементам редакции.

Еще более озадачивает то, что сам элемент newsoom при отображении в контексте другого домена отображается правильно.

т.е.

www.mysite.com/sitecore/content/my_turkish_site/path/newsroom?sc_lang=tr-TR

показывает списки без проблем, включая даты, отформатированные в соответствии с культурой, но

www.mysite.com.tr/sitecore/content/my_turkish_site/path/newsroom?sc_lang=tr-TR

показывает пустые списки.

Точно такая же проблема возникает, если язык переключается на английский (язык источника клона)

Почти весь турецкий сайт работает нормально.

Ни один из компонентов презентации не помечен как кэшируемый.

Ни один из компонентов представления не имеет указанного источника данных (т. Е. Все они используют ось текущего элемента / потомков)

Каковы возможные причины этой проблемы и как их проверить?

EDIT: Для Марка Урсино Это определение сайта (слегка вымышленное). Я не могу опубликовать гораздо больше web.config ...

<site name="www.mysite.com.tr" patch:after="site[@name='www.mysite.com.au']" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/CloneData/TurkishClone" hostName="www.mysite.com.tr" startItem="/Turkey_Home" database="web" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" language="tr-TR" /> 

Некоторые отладки показывают, что XSLT не соответствуют шаблону при просмотре элемента в турецком контексте. Это использованное совпадение отладки (выбор - это то, что мы используем в нашем for-each):

<xsl:value-of select="count(./descendant::item[@template='newsitem' and @id!=$topNewsId and sc:fld('__created',.)])"/>

Он совпадает с тем же элементом, который просматривали в других доменах.

Результаты отладки показывают, что турецкий сайт думает, что шаблон newsıtem вместо newsitem (я ошибаюсь!).

Я также протестировал просмотр новостной ленты других сайтов через турецкий домен - проблема та же. У нас та же проблема с элементами на основе шаблона eventitem и, очевидно, с шаблоном Image Spot.

Ответы [ 2 ]

1 голос
/ 28 февраля 2012

Отвечая на мой вопрос.

Имена шаблонов Sitecore преобразуются в нижний регистр для использования в сравнении XSLT с помощью расширений Sitecore XSLT.

Это преобразование в нижнем регистре не было установлено как культурно инвариантное. В турецком языке принудительное использование нижнего регистра верхнего регистра I дает нижний регистр ı

Sitecore заменил вызовы на ToLower() в API Sitecore на ToLowerInvariant() с 6.5 rev.110419

http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/ChangeLog.aspx

Поскольку мы еще не обновляемся до версии 6.5, пока будем использовать идентификаторы шаблонов, а не имена в XSLT.

.Net информация о строках и культуре, в том числе, в частности, "проблема турецкого языка" http://msdn.microsoft.com/en-us/library/ms973919.aspx

1 голос
/ 28 февраля 2012

Пытались ли вы распечатать идентификатор языка, языка и контекста, lang, version в списке событий и xslts?

Если это покажет что-то неожиданное, вы можете присоединиться к некоторым преобразователям конвейеров Sitecore.с отладкой внешней сборки Reflector Pro.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...