Имеется вывод подразделов конкретного раздела каталога, выполнено таким образом
<xsl:apply-templates select="document('udata://catalog/getCategoryList/0/(zabory)')/udata"/>
# шаблон
<xsl:template match="udata[@module = 'catalog'][@method = 'getCategoryList']">
<ul class="sub">
<xsl:apply-templates select="items/item" mode="catalog"/>
</ul>
</xsl:template>
<xsl:template match="item" mode="catalog">
<li>
<a href="{@link}">
<xsl:if test="@id = $pid">
<xsl:attribute name="class">active</xsl:attribute>
</xsl:if>
<xsl:value-of select="." />
</a>
</li>
</xsl:template>
В данный момент появилась задача выводит еще и подразделы этих разделов, а вот как это осуществить что то не понимаю.
Грубо говоря, нужно вывести многоуровневое меню подразделов, конкретного раздела каталога, используя макрос getCategoryList, плюс выделять активные ветки и разделы
Не получается,уже с разных сторон захожу, поиском прошлась,моего решения нету(((
сейчас пришла к такому варианты
выводу за счет %content menu()% все меню со всеми подразделами, всегда развернуто, что в целом замечательно. Но вот как сделать что бы выводились подраздел только конкретного раздела? тоесть начинаем не полностью выводить все меню, а только структуру конкретного раздела?
Сейчас код выглядит так
<div class="menu333">
<xsl:apply-templates select="document('udata://content/menu/0/3')/udata/items" mode="menu333"/>
</div>
<xsl:template match="items" mode="menu333">
<ul>
<xsl:apply-templates select="item" mode="menu333"/>
</ul>
</xsl:template>
<xsl:template match="item[@status = 'active']" mode="menu333">
<li>
<span>
<xsl:value-of select="@name"/>
</span>
<xsl:apply-templates select="items" mode="menu333"/>
</li>
</xsl:template>
<xsl:template match="item|item[.//item[@status = 'active']]" mode="menu333">
<li>
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
<xsl:apply-templates select="items" mode="menu333"/>
</li>
</xsl:template>
не совсем понятно что значит "конкретный" раздел каталога, если это активный раздел то можно так вывести
<xsl:template match="udata[@method = 'getCategoryList']" mode="left-column">
<ul class="catalog_menu" umi:button-position="bottom left"
umi:element-id="{@category-id}" umi:region="list" umi:module="catalog" umi:sortable="sortable">
<xsl:apply-templates select="//item" mode="left-column" />
</ul>
</xsl:template>
<xsl:template match="udata[@method = 'getCategoryList']" mode="left-column-children">
<ul class="children" umi:button-position="bottom left"
umi:element-id="{@category-id}" umi:region="list" umi:module="catalog" umi:sortable="sortable">
<xsl:apply-templates select="//item" mode="left-column" />
</ul>
</xsl:template>
<xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column">
<li class="cat-item" umi:element-id="{@id}" umi:region="row">
<xsl:variable name="is_active" select="document(concat('udata://custom/is_active/', @id, '/xslt'))/udata" />
<xsl:if test="$is_active = 1">
<xsl:attribute name="class">cat-item current-cat</xsl:attribute>
</xsl:if>
<a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
<xsl:value-of select="." />
</a>
<span class="count">
(<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '//1/10'))/udata/total" />)
</span>
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id, '//1/'))" mode="left-column-children"/>
</li>
</xsl:template>
выглядит вот так
(http://i.gyazo.com/8b7f2988ed4677eefab51e4bc6b02128.png)
описано все тут
http://wiki.umisoft.ru/%D0%9E%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B5%D0%BD%D1%8E_%D0%B4%D0%B5%D0%BC%D0%BE%D0%B4%D0%B8%D0%B7%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8B%D0%BC_%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE_%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BF%D1%83%D0%BD%D0%BA%D1%82_%D0%BC%D0%B5%D0%BD%D1%8E (http://wiki.umisoft.ru/%D0%9E%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B0%D1%82%D1%8C_%D0%B2_%D0%BC%D0%B5%D0%BD%D1%8E_%D0%B4%D0%B5%D0%BC%D0%BE%D0%B4%D0%B8%D0%B7%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8B%D0%BC_%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE_%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BF%D1%83%D0%BD%D0%BA%D1%82_%D0%BC%D0%B5%D0%BD%D1%8E)
тогда так добавить внутри шаблона дочернего раздела "left-column-children" проверку на активность и если активен снова вызвать шаблон основного раздела "left-column"
<xsl:template match="udata[@method = 'getCategoryList']" mode="left-column">
<ul class="catalog_menu" umi:button-position="bottom left"
umi:element-id="{@category-id}" umi:region="list" umi:module="catalog" umi:sortable="sortable">
<xsl:apply-templates select="//item" mode="left-column" />
</ul>
</xsl:template>
<xsl:template match="udata[@method = 'getCategoryList']" mode="left-column-children">
<ul class="children" umi:button-position="bottom left"
umi:element-id="{@category-id}" umi:region="list" umi:module="catalog" umi:sortable="sortable">
<xsl:apply-templates select="//item" mode="left-column-children" />
</ul>
</xsl:template>
<xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column-children">
<li class="cat-item" umi:element-id="{@id}" umi:region="row">
<xsl:variable name="is_active" select="document(concat('udata://custom/is_active/', @id, '/xslt'))/udata" />
<xsl:if test = "$is_active = 1">
<xsl:attribute name="class">cat-item current-cat</xsl:attribute>
</xsl:if>
<a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
<xsl:value-of select="." />
</a>
<span class="count">
(<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '//1/10'))/udata/total" />)
</span>
<xsl:if test = "$is_active = 1">
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id, '//1/'))" mode="left-column"/>
</xsl:if>
</li>
</xsl:template>
<xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column">
<li class="cat-item" umi:element-id="{@id}" umi:region="row">
<xsl:variable name="is_active" select="document(concat('udata://custom/is_active/', @id, '/xslt'))/udata" />
<xsl:if test = "$is_active = 1">
<xsl:attribute name="class">cat-item current-cat</xsl:attribute>
</xsl:if>
<a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
<xsl:value-of select="." />
</a>
<span class="count">
(<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '//1/10'))/udata/total" />)
</span>
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id, '//1/'))" mode="left-column-children"/>
</li>
</xsl:template>
на выходе имеем
(http://i.gyazo.com/512c522d1e1193670a658ebb66283f35.png)
со стилями косяк но это уже мелочи