Народ, кто работает на XSLT шаблонизаторе - подскажите.
С tpl дружу на все 100, но вот xslt не моё, но надо ...
В шаблонах не могу найти, кто отвечает за блок меню блок.
В дефолтном шаблоне написано:
<xsl:call-template name="catalog_main_list">
<xsl:with-param name="level" select="1"/>
<xsl:with-param name="show_objects" select="1" />
</xsl:call-template>
Не могу понять где настроить вывод данного блока в каталожных разделах. Все перелазил, ищу секцию catalog_main_list, или что то не то делаю?
Что то где то разобрался ...
Но остался вопрос:
Как вывести подменю текущего раздела.
На TPLS делал так: %content menu('template', 1, %pid %) %
А на XSLT не получается подставить текущую ID
<xsl:apply-templates select="document(concat('udata://content/menu/1/1/', result/@pageId))/udata" mode="menu"/>
Шаблон ниже:
Но дело не в шаблоне, т.к. если я удаляю его ID всеравно весит ...
<xsl:template match="items" mode="menu">
<xsl:param name="id" />
<xsl:param name="level" />
<div class="main_catalog_list">
<ul class="level-{$level}" umi:element-id="{$id}" umi:add-text="&add-text-menu;" umi:add-method="popup" umi:region="list" umi:sortable="sortable" umi:button-position="top right" umi:method="menu" umi:module="content" >
<xsl:apply-templates select="item" mode="multilevel_menu">
<xsl:with-param name="level" select="$level + 1" />
</xsl:apply-templates>
</ul>
</div>
</xsl:template>
Честно говоря проблему решил (но id шка вылазиет всеравно от куда непонятно).
Если по порядку, то я вывожу не многоуровневое меню, а простое меню дочерней страницы. Что бы на каждой страницы если у неё есть дочерниие элементы выводились в меню. Проблема была в подстановки pageId - ё решил (неверный синтаксис был).
Вызов макроса такой, в дефолтном layouts/default
<xsl:apply-templates select="document(concat('udata://content/menu/leftmenu/1/',/result/@pageId))/udata" mode="menu"/>
И на этой же страницы шаблон:
<xsl:template match="items" mode="menu">
<xsl:param name="id" />
<xsl:param name="level" />
<div class="main_catalog_list">
<ul class="level-{$level}" umi:element-id="{$id}" umi:add-text="&add-text-menu;" umi:add-method="popup" umi:region="list" umi:sortable="sortable" umi:button-position="top right" umi:method="menu" umi:module="content" >
<xsl:apply-templates select="item" mode="multilevel_menu">
<xsl:with-param name="level" select="$level + 1" />
</xsl:apply-templates>
</ul>
</div>
</xsl:template>
Возможно ещё что то подкружается по умолчанию из /content/menu.xsl
Я просто не очень понимаю структру работы xsl