Как вывести все товары выбранного раздела каталога вне зависимости от вложенности XSLT — различия между версиями
(не показано 8 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | |||
'''Актуально для версии 2.9''' | '''Актуально для версии 2.9''' | ||
− | + | [[Категория:Модуль Каталог]] | |
− | + | Иногда у каталога появляется больше одного уровня вложенности и тогда на страницах промежуточных разделов никакие товары не выводятся, потому как они находятся на уровень ниже. Например есть каталог с 3 уровнями вложенности: | |
− | : | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <source lang="text"> | |
− | + | Каталог (1 уровень) | |
− | + | :Раздел (2 уровень) | |
+ | ::Под-раздел (3 уровень) | ||
+ | :::Товар (4 уровен) | ||
+ | :::Товар | ||
+ | :::Товар | ||
+ | </source> | ||
+ | |||
+ | При использовании стандартных макросов на странице Раздела (2 уровень вложенности) никакой информации выводится не будет, что не очень красиво и может сбить пользователя с толку, туда ли он двигается. | ||
+ | Для вывода товаров рекурсивно(то есть по всем уровням вложенности начиная с выбранного раздела) мы создадим отдельный шаблон вывода товаров в зависимости от уровня вложенности и выбранного раздела. В папке \templates\demodizzy\xslt\modules\catalog\ создадим файл category-menu-view.xsl и скопируем туда содержимое файла category-view.xsl | ||
+ | Теперь изменим шаблоны вывода объектов каталога: | ||
<source lang="xml"> | <source lang="xml"> | ||
Строка 30: | Строка 32: | ||
</source> | </source> | ||
− | + | Где [@pageId='342'] это ID страницы раздела каталога в структуре сайта. Вы можете посмотреть данный ID в модуле "Структура" наведя курсор на соответствующий раздел или в адресной строке, открыв необходимый раздел для редактирования. | |
− | + | Если у Вас несколько таких разделов то Вы можете указать несколько шаблонов с разными ID. | |
Условие атрибута [count(/result/parents/page) = 1] указывает на уровень вложенности, если у Вас больше 2 уровней, то Вы можете для каждого последующего уровня указать отдельный шаблон. | Условие атрибута [count(/result/parents/page) = 1] указывает на уровень вложенности, если у Вас больше 2 уровней, то Вы можете для каждого последующего уровня указать отдельный шаблон. |
Текущая версия на 10:47, 1 июля 2013
Актуально для версии 2.9
Иногда у каталога появляется больше одного уровня вложенности и тогда на страницах промежуточных разделов никакие товары не выводятся, потому как они находятся на уровень ниже. Например есть каталог с 3 уровнями вложенности:
Каталог (1 уровень)
:Раздел (2 уровень)
::Под-раздел (3 уровень)
:::Товар (4 уровен)
:::Товар
:::Товар
При использовании стандартных макросов на странице Раздела (2 уровень вложенности) никакой информации выводится не будет, что не очень красиво и может сбить пользователя с толку, туда ли он двигается. Для вывода товаров рекурсивно(то есть по всем уровням вложенности начиная с выбранного раздела) мы создадим отдельный шаблон вывода товаров в зависимости от уровня вложенности и выбранного раздела. В папке \templates\demodizzy\xslt\modules\catalog\ создадим файл category-menu-view.xsl и скопируем туда содержимое файла category-view.xsl Теперь изменим шаблоны вывода объектов каталога:
<xsl:template match="/result[@method = 'category'][count(/result/parents/page) = 1]">
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', page/@id, '////2/'))/udata" />
</xsl:template>
<xsl:template match="/result[@method = 'category'][count(/result/parents/page) = 2][@pageId='342']">
<xsl:apply-templates select="document('udata://catalog/getObjectsList/notemplate/342///5/')" />
</xsl:template>
<xsl:template match="/result[@method = 'category'][count(/result/parents/page) = 3]">
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', page/@id, '////2/'))/udata" />
</xsl:template>
Где [@pageId='342'] это ID страницы раздела каталога в структуре сайта. Вы можете посмотреть данный ID в модуле "Структура" наведя курсор на соответствующий раздел или в адресной строке, открыв необходимый раздел для редактирования. Если у Вас несколько таких разделов то Вы можете указать несколько шаблонов с разными ID. Условие атрибута [count(/result/parents/page) = 1] указывает на уровень вложенности, если у Вас больше 2 уровней, то Вы можете для каждого последующего уровня указать отдельный шаблон.