Вывод количества объектов в категории. XSLT

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 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>

Подкатегории.png


А если мы хотим добавить и общее количество товаров в категории, добавим эту же самую строчку в шаблоне, по которому формируется вывод категорий. Шаблон этот \xsltTpls\modules\catalog\left-column-category-list.xsl

Добавляем ту же самую строку:

(<xsl:value-of select="document(concat('udata://catalog/getObjectsList/no/', @id, '///10'))/udata/total" />)

Внутри span, сразу после </a>, и на выходе получим такую картину:
Категории.png