Вывод превью других товаров из раздела (xslt) — различия между версиями
Yulia (обсуждение | вклад) (Новая страница: «Задача: необходимо в карточке товара вывести превью других товаров из этого же раздела ка…») |
Yulia (обсуждение | вклад) |
||
Строка 49: | Строка 49: | ||
В результате получим уменьшенные изображения остальных товаров, которые являются ссылками на страницы этих товаров. | В результате получим уменьшенные изображения остальных товаров, которые являются ссылками на страницы этих товаров. | ||
+ | |||
+ | [[Категория:Модуль Каталог]][[Категория:Верстка в XSLT]] |
Версия 16:43, 31 января 2013
Задача: необходимо в карточке товара вывести превью других товаров из этого же раздела каталога.
Получим все товары в разделе с помощью выборки Usel, для этого создадим файл /usels/optional.xml и поместим в него следующий код:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type module="catalog" method="object" />
<category depth="1">{parent}</category>
</target>
<extended>
<properties>photo</properties>
</extended>
</selection>
В шаблоне вывода карточки товара в файле /www/templates/demodizzy/xslt/modules/catalog/object-view.xsl в нужном месте прописываем вызов Usel. Предварительно заведем переменную, в которой будет id текущего раздела, и передадим ее в качестве параметра для Usel:
<xsl:variable name="par" >
<xsl:value-of select=".//page/@parentId" />
</xsl:variable>
<xsl:apply-templates select="document(concat('usel://optional/?parent=',$par))" mode="other" />
Заведем переменную, в которую будет передаваться id страницы текущего товара, чтобы впоследствии не отображать его в результатах выборки:
<xsl:variable name="current">
<xsl:value-of select="result/page/@id" />
</xsl:variable>
Далее пропишем шаблон обработки результатов выборки:
<xsl:template match="page" mode="other">
<xsl:variable name="oth">
<xsl:value-of select=".//@id" />
</xsl:variable>
<xsl:if test="$current!=$oth">
<xsl:variable name="pic_path" select=".//property[@name='photo']/value" />
<xsl:variable name="pic_min" select="document(concat('udata://system/makeThumbnail/(.', $pic_path, ')/100/100'))/udata/src"/>
<xsl:variable name="obj_path" select=".//@link" />
<a href="{$obj_path}"><img src="{$pic_min}"/></a>
</xsl:if>
</xsl:template>
В результате получим уменьшенные изображения остальных товаров, которые являются ссылками на страницы этих товаров.