Вывод количества объектов в категории. XSLT — различия между версиями
XiBOR (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | '''Актуально для версии 2.9''' | ||
+ | |||
Если у нас стоит задача вывести количество товаров напротив каждой подкатегории(к примеру чтоб напротив DVD плееры стояла цифра 3, то есть кол-во DVD плееров). Конечно же есть статья [[Выводим_количество_товаров_в_категории_xslt]], в которой это уже реализованно. Но там используется usel выборка. А мы постараемся обойтись без неё, и вообще сделать это решение минимальным. | Если у нас стоит задача вывести количество товаров напротив каждой подкатегории(к примеру чтоб напротив DVD плееры стояла цифра 3, то есть кол-во DVD плееров). Конечно же есть статья [[Выводим_количество_товаров_в_категории_xslt]], в которой это уже реализованно. Но там используется usel выборка. А мы постараемся обойтись без неё, и вообще сделать это решение минимальным. | ||
Версия 11:20, 5 июня 2013
Актуально для версии 2.9
Если у нас стоит задача вывести количество товаров напротив каждой подкатегории(к примеру чтоб напротив DVD плееры стояла цифра 3, то есть кол-во DVD плееров). Конечно же есть статья Выводим_количество_товаров_в_категории_xslt, в которой это уже реализованно. Но там используется usel выборка. А мы постараемся обойтись без неё, и вообще сделать это решение минимальным.
Для начала откроем шаблон, по которому все подкатегории у нас выводятся, это шаблон \xsltTpls\modules\catalog\category-list.xsl
Смотрим на шаблон:
<xsl:template match="udata[@method = 'getCategoryList']//item">
<li umi:element-id="{@id}" umi:region="row">
<a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
<xsl:value-of select="." />
</a>
</li>
</xsl:template>
Соответственно, для того, чтобы вывести количество, мы можем взять значение total из макроса getObjectsList. Добавим вывод значения, после наименования категории. Выглядеть это будет так:
<xsl:template match="udata[@method = 'getCategoryList']//item">
<li umi:element-id="{@id}" umi:region="row">
<a href="{@link}" umi:field-name="name" umi:delete="delete" umi:empty="&empty-section-name;">
<xsl:value-of select="." />
</a>(<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '///10'))/udata/total" />)
</li>
</xsl:template>
А если мы хотим добавить и общее количество товаров в категории, добавим эту же самую строчку в шаблоне, по которому формируется вывод категорий. Шаблон этот \xsltTpls\modules\catalog\left-column-category-list.xsl
Добавляем ту же самую строку:
(<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '///10'))/udata/total" />)
Внутри span, сразу после </a>, и на выходе получим такую картину: