Вывод всех подразделов каталога в левом меню (интернет магазин "Современный")

Материал из 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" />. Если его добавить - то этот шаблон будет вызывать сам себя и выводить абсолютно все под категории.