Как вывести все товары выбранного раздела каталога вне зависимости от вложенности XSLT — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
Строка 1: Строка 1:
 
'''Актуально для версии 2.9'''
 
'''Актуально для версии 2.9'''
 +
 +
:Иногда у каталога появляется больше одного уровня вложенности и тогда на страницах промежуточных разделов никакие товары не выводятся, потому как они находятся на уровень ниже. Например есть каталог с 4 уровнями вложенности:
 +
<каталог>
 +
:<1уровень><>
 +
::<2уровень><>
 +
:::<3уровень><>
 +
::::<4уровень><>
 +
:::::<товар><>
 +
:::::<товар><>
 +
:::::<товар><>
 +
</каталог>
 +
 +
:При использовании стандартных макросов на 2 и 3 уровне, на странице никакой информации выводится не будет, что не очень красиво и может сбить пользователя с толку, туда ли он двигается.
 +
:Для вывода товаров рекурсивно(то есть по всем уровням вложенности начиная с выбранного раздела) мы создадим отдельный шаблон вывода товаров в зависимости от уровня вложенности и выбранного раздела. В папке \templates\demodizzy\xslt\modules\catalog\ создадим файл category-menu-view.xsl и скопируем туда содержимое файла category-view.xsl
 +
:Теперь изменим часть
  
 
<source lang="xml">
 
<source lang="xml">

Версия 13:14, 7 июня 2013

Актуально для версии 2.9

Иногда у каталога появляется больше одного уровня вложенности и тогда на страницах промежуточных разделов никакие товары не выводятся, потому как они находятся на уровень ниже. Например есть каталог с 4 уровнями вложенности:

<каталог>

<1уровень><>
<2уровень><>
<3уровень><>
<4уровень><>
<товар><>
<товар><>
<товар><>

</каталог>

При использовании стандартных макросов на 2 и 3 уровне, на странице никакой информации выводится не будет, что не очень красиво и может сбить пользователя с толку, туда ли он двигается.
Для вывода товаров рекурсивно(то есть по всем уровням вложенности начиная с выбранного раздела) мы создадим отдельный шаблон вывода товаров в зависимости от уровня вложенности и выбранного раздела. В папке \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>