Пример использования поля "ссылка на дерево"

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

Задача: на сайте, требуется реализовать, чтобы при просмотре объекта каталога пользователь под описанием товара и его характеристик видел: "С этим товаром обычно покупают" и ссылка на аксессуар, или "Похожий товар" и ссылка, и т.д.

Решение: Заходим в модуль "Шаблоны данных". Выбираем на редактирование "Объект каталога", добавляем новое поле (например с идентификатором 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) &gt; 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>
		
		<div class="clear"></div>
	</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']">