Доступ к ключевым дочерним ключевым словам при использовании шаблона компонента XSLT

Во время последнего обновления от Tridion 2009 до 2011 года часть шаблона компонента XSLT перестала работать.

Шаблон компонента читает дочерние ключевые слова из раздела categoryXSD текущей публикации XML. Затем используйте webdav для загрузки каждого ключевого слова.

Похоже, что этот раздел публикации XML был удален в 2011 году.

Кто-нибудь знает еще один метод получения дочерних ключевых слов из идентификатора категории Tcm при использовании шаблонов XSLT?

Ответ 1

Если мне нужны списки элементов при использовании старых компонентов XSLT Component Templates, я обычно делаю "Сервис-помощник" или страницу ASPX, которая возвращает XML-документ, содержащий соответствующие элементы. Затем вы можете вызвать этого помощника, используя функцию Document() в XSLT. Обычно это выглядит как ASPX, хранящийся в CMS-сервисе, например, http://tridion.local.url/web/helpers/GetListXml.aspx?uri=SomeOrgItemURI

Вы можете использовать TOM API в GetListXml.aspx для запроса элемента с помощью GetListItem и записи ответа на вывод.

Затем в вашем XSLT вы можете использовать что-то вроде <xsl:variable name="KEYWORDS" select="document('http://tridion.local.url/web/helpers/GetListXml.aspx?uri=$CAT_URI')"/>. Затем вы можете перебирать ключевое слово node в новой переменной.

Однако ничто из этого не требуется, если вы используете Модульные шаблоны и XSLT Mediator, доступные на SDL Tridion World, поскольку в нем много помощников Я настоятельно рекомендую рассмотреть новые методы шаблонов, у них есть что предложить.

Ответ 2

Я смотрю на XML публикации, я думаю, вам не повезло. Есть упоминание о <tcm:CategoriesXSD>, и вы можете получить из него категорию TcmUri, но если вы перейдете к XML категории, в нем нет упоминания о его дочерних ключевых словах.

Итак, используйте XSLT-посредник, как предлагает Крис, или перепишите этот XSLT как шаблон С#.

Ответ 3

Вы не упоминаете, используете ли вы XSLT-посредник для использования с модульными шаблонами или используете простые старые XSLT-компоненты. Вы можете уточнить?

Я использую XSLT Mediator и добавляю вспомогательный шаблон, написанный на С#, который добавляет ключевые слова из категории в пакет до выполнения XSLT. Затем этот список можно получить в виде XML-документа, используя параметр. Если это сработает для вас, дайте мне знать, и я попытаюсь выкопать образец кода.