Добавление уже имеющихся объектов каталога в другие категории через дополнительное поле "ссылка на дерево"
Материал из Umicms
Версия от 13:34, 5 июня 2013; Mad grant (обсуждение | вклад)
С точки зрения SEO использование "виртуальных копий" страниц, для занесения одного и того же товара в разные категории каталога не всегда является хорошим вариантом. Поэтому можно использовать следующее решение. Для категории каталога добавить поле "Ссылка на дерево" и в этом поле указывать уже имеюшиеся товары. Список категорий, в которых отмечен данный товар в качестве ссылки на дерево, можно вывести следующим образом:
<xsl:template name="other-catalog">
<h3>Этот товар отмечен в следующих разделах:</h3>
<xsl:apply-templates select="document('usel://getSection')/udata/page" mode="getSection">
<xsl:with-param name="this_page" select="@id" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="page" mode="getSection">
<xsl:param name="this_page" />
<xsl:apply-templates select="document(concat('upage://', @id))/udata//property[@name='ssylka_na_obekt']/value/page" mode="getSectionPage" >
<xsl:with-param name="this_page" select="$this_page" />
<xsl:with-param name="this_link" select="@link" />
<xsl:with-param name="this_name" select="document(concat('upage://', @id))/udata//property[@name='h1']/value" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="page" mode="getSectionPage">
<xsl:param name="this_page" />
<xsl:param name="this_name" />
<xsl:param name="this_link" />
<xsl:if test="$this_page = @id">
<div class="list" name="list"> - <a href="{$this_link}"><b><xsl:value-of select="$this_name" /></b></a></div>
</xsl:if>
</xsl:template>
Файл Usel:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type id="65" />
</target>
<property name="ssylka_na_obekt">
<page>{1}</page>
</property>
</selection>