К каким встроенным параметрам я могу получить доступ в Sitecore XSLT?Как мне выставить нужные мне глобальные настройки? - PullRequest
1 голос
/ 21 января 2011

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

Меня особенно интересует возможность доступа к различным частям информации, относящимся к запуску нескольких сайтов и языков в одной инсталляции - домашний узел, имя хоста, имя сайта и т. Д. В .NET большая часть этого кажется доступны либо через Sitecore.Context, либо через объекты сервера .NET. Мне нужно иметь возможность получать как контекстную информацию, так и настройки для других доменов / сайтов в одном решении.

например. mysite1.com в en-GB и mysite2.com в da-DK указывают на один и тот же контент только на разных языках. Оба домена теоретически могут поддерживать другие языки, некоторые из которых могут быть общими (например, оба сайта допускают перевод FR-FR). В этом случае мне нужно знать, на каком сайте я сейчас нахожусь, на каком языке я нахожусь и какие языки поддерживаются. Аналогичная информация будет необходима для определения, например, CSS для сайта, разделы контента и т. д.

Если мне нужно раскрыть эти глобальные настройки и настройки сайта, как мне это сделать? Я вижу несколько возможных методов, в том числе:

  • Написание функций расширения на C #
  • Создание шаблона / элемента глобальных настроек и использование XSLT для их чтения и преобразования в параметры - XSLT может быть включен / импортирован в другие XSLT при необходимости.

Цель состоит в том, чтобы сделать весь код как можно более универсальным.

Есть ли лучшая практика для этого? Каковы недостатки двух методов выше?

Ответы [ 3 ]

2 голосов
/ 09 февраля 2011

Полный список доступных расширений Sitecore для вспомогательных функций xsl документирован в справочном файле справки API, доступном по ссылке .

Вспомогательные функции XSL содержатся в XslHelper Class

Пространства имен ► Sitecore.Xml.Xsl ► XslHelper

Документация по справочному файлу предназначена для C # (в который встроены расширения), но в примечаниях к документации:

Вспомогательные функции для использования с xsl файлы. Общественные функции в этом класс может быть вызван из файла xsl используя префикс sc (напр. СБН: FLD (...))

2 голосов
/ 04 декабря 2011

Отражатель показывает, что автоматически добавляются следующие элементы:

list.AddParam("id", string.Empty, item.ID.ToString());
list.AddParam("lang", string.Empty, Language.Current.Name);
list.AddParam("sc_lang", string.Empty, Language.Current.Name);
list.AddParam("sc_item", string.Empty, GetNodeIterator(item));
0 голосов
/ 24 января 2011

Излагая личное мнение, я думаю, что вы должны получить ответ, который вы уже видите прямо перед собой - забудьте о XSLT и просто сделайте C #. Я не знаю многих (фактически, любых) опытных разработчиков Sitecore, которые придерживаются XSLT для чего-либо, кроме самого базового рендеринга. Это тоже, конечно, только мое личное мнение - но я видел подобные заявления от многих блогеров Sitecore.

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

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