Пример использования поля "ссылка на дерево" — различия между версиями
SerjK (обсуждение | вклад) |
SerjK (обсуждение | вклад) |
||
Строка 25: | Строка 25: | ||
</xsl:apply-templates> | </xsl:apply-templates> | ||
− | |||
</xsl:template> | </xsl:template> | ||
</xsl:stylesheet> | </xsl:stylesheet> |
Версия 14:32, 12 марта 2012
Задача: на сайте, требуется реализовать, чтобы при просмотре объекта каталога пользователь под описанием товара и его характеристик видел: "С этим товаром обычно покупают" и ссылка на аксессуар, или "Похожий товар" и ссылка, и т.д.
Решение: Заходим в модуль "Шаблоны данных". Выбираем на редактирование "Объект каталога", добавляем новое поле (например с идентификатором property-recommended) , ставим галочку "Видимое" и выбираем тип поля "Ссылка на дерево". Теперь при добавлении или редактировании объекта каталога мы можем увидеть, что у него появилось добавленное поле, при клике на которое, система UMI.CMS предлагает выбрать куда будет вести ссылка с данного поля
1.При использовании xslt-шаблонизатора, необходимо написать шаблон обработчик, сохраниме его под именем recommended.xsl, выгледеть он будет так:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:umi="http://www.umi-cms.ru/TR/umi">
<xsl:template match="property[@name = '&property-recommended;'][count(value/page) > 0]" />
<xsl:template match="property[@name = '&property-recommended;']">
<hr />
<h4>
<xsl:text>C этим товаром обычно покупают:</xsl:text>
</h4>
<xsl:apply-templates select="value/page" mode="short-view">
<xsl:with-param name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
2. В главном шаблоне каталога подключаем, ранее созданный шаблон-обработчик <xsl:include href="recommended.xsl" />
3. Далее в зависимости от того, где мы хотим увидеть наше поле, выводим это поле средствами xslt
<xsl:apply-templates select=".//property[@name = '&property-recommended;']" />, например, если хотим чтобы поле показывалось при детальном просмотре объекта каталога, то такую запись нужно добавить в
<xsl:template match="/result[@module = 'catalog' and @method = 'object']">