Вывод всех подразделов каталога в левом меню (интернет магазин "Современный")
Материал из Umicms
Версия от 08:29, 30 марта 2011; Kirill (обсуждение | вклад) (Новая страница: «'''Проблема:'''<br/> В левом меню на демо-сайте интернет магазина "Современный" воводятся разде…»)
Проблема:
В левом меню на демо-сайте интернет магазина "Современный" воводятся разделы каталога только до 2-ого уровня.
Решение:
Решение может показаться не очевидным, но в действительности это одно из очень удобных свойств xslt-шаблонизатора.
Можно организовать своего рода "замыкание". В шаблоне "\xsltTpls\modules\catalog\left-column-category-list.xsl" есть следующий блок:
<xsl:template match="udata[@method = 'getCategoryList']//item" mode="left-column">
<li umi:element-id="{@id}" umi:region="row">
<span>
<a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
<xsl:value-of select="." />
</a>
</span>
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id))" mode="left-column" />
</li>
</xsl:template>
В оригинальном блоке отсутствует режим вызова (отмечен жирным) <xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id))" mode="left-column" />. Если его добавить - то этот шаблон будет вызывать сам себя и выводить абсолютно все под категории.