Добавление уже имеющихся объектов каталога в другие категории через дополнительное поле "ссылка на дерево"

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

С точки зрения 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>