Линк из дополнительных свойств файл и строка
Здравствуйте!
Помогите реализовать следующую задачу:
Есть группы товаров, у которых свои подгруппы. У этих подгрупп есть доп. свойтва типа файл и строка. Через свойство файл цепляю прайс-лист по всем товарам относящимся к данной подгруппе. Возникла задача создать раздел прайс-лист, куда будут автоматом цеплятся ссылки на файлы из подгрупп, а название ссылки будет задаваться черех допсвойство строка. Выглядеть это будет примерно так - Сначала заголовок группы с картинкой от группы, а под ним список линков на прайсы подгрупп.
Реализовал все это на основе xsl шаблона "прайс-лист" (вот часть xsl)
.............
<!-- Шаблон "МагазинПрайс" -->
<xsl:template match="/shop">
<!-- Отображаем таблицу -->
<table style="width: 100%;" border="0" cellspacing="0" cellpadding="15">
<xsl:apply-templates select="//group"><xsl:sort select="@id" data-type="number" order="ascending"/></xsl:apply-templates>
</table>
</xsl:template>
<!-- Группы товаров -->
<xsl:template match="group">
<xsl:if test="@parent=0"> <!-- Проверяю группа это или нет, если да то далее вставляю изображение группы и ее название -->
<tr>
<!-- Изображение для товара, если есть -->
<td align="right" valign="top">
<xsl:if test="small_image != ''">
<a href="{/shop/path}{fullpath}"><img src="{small_image}" align="left" /></a>
</xsl:if>
</td>
<td>
<h1><xsl:value-of select="name"/></h1>
<!-- Далее работаю с подгруппами данной группы -->
<ul>
<li>
<a href="{group/propertys/property[@xml_name='pricelist-group']/property_file_path}">
<xsl:apply-templates select="group/propertys/property[@xml_name='pricelist-title']/value"/></a>
</li>
</ul>
</td>
</tr>
</xsl:if>
</xsl:template>
...................
Когда подгруппе всего один файл и соответствующее описание, то линк получается нормальным, однако если появляется еще одна (и более) подгрупп с прайсом то линк ссылается только на один прайс, а описание сливается в одну строку - ПрайсЛист1ПрайсЛист2 Как сделать чтобы ПрайсЛист1 ссылался на 1 прайс, ПрайсЛист2 на 2 прайс соответственно.
В xsl я не особо силен, видимо доп свойства обрабатываются по очереди, сначала из всех подгрупп свойство файл лепится одну ссылку, в потом тоже самое и со свойством строка происходит.
На всякий случай кусок xml
<group id="600" parent="0">
<name>Кровельные материалы</name>
<description>Описание раздела кровельных материалов</description>
<image width="101" height="101">/upload/shop_7/shop_group_600/shop_group_image600.jpg</image>
<small_image width="101" height="101">/upload/shop_7/shop_group_600/small_shop_group_image600.jpg</small_image>
<order>1</order>
<indexation>1</indexation>
<path>materials</path>
<fullpath>materials/</fullpath>
<count_items>0</count_items>
<count_groups>7</count_groups>
<count_all_items>50</count_all_items>
<count_all_groups>7</count_all_groups>
<seo_title></seo_title>
<seo_description></seo_description>
<seo_keywords></seo_keywords>
<propertys>
<property type="WYSIWYG" xml_name="general-text" id="3" parent_id="0" value_id="1">
<name>Текст</name>
<value></value>
<default_value></default_value>
<order>2</order>
</property>
</propertys>
<group id="599" parent="600">
<name>Металлочерепица</name>
<description>Описание раздела металлочерепица</description>
<image width="800" height="800">/upload/shop_7/shop_group_599/shop_group_image599.jpg</image>
<small_image width="101" height="101">/upload/shop_7/shop_group_599/small_shop_group_image599.jpg</small_image>
<order>0</order>
<indexation>1</indexation>
<path>metall</path>
<fullpath>materials/metall/</fullpath>
<count_items>5</count_items>
<count_groups>0</count_groups>
<count_all_items>5</count_all_items>
<count_all_groups>0</count_all_groups>
<seo_title></seo_title>
<seo_description></seo_description>
<seo_keywords></seo_keywords>
<propertys>
<property type="String" xml_name="pricelist-title" id="5" parent_id="0" value_id="28">
<name>Текст в прайс-листе</name>
<value>Металлочерепица (Доставка бесплатно)</value>
<default_value></default_value>
<order>0</order>
</property>
<property type="File" xml_name="pricelist-group" id="4"
parent_id="0" value_id="11">
<name>Скачать прайслист</name>
<value>metallocherepitca.xls</value>
<default_value></default_value>
<order>1</order>
<property_file_path size="299520">/upload/shop_7/shop_group_599/shop_property_file_599_4.xls</property_file_path>
<small_image>
<value>icon-excel.gif</value>
<property_file_path width="29" height="34" size="806">/upload/shop_7/shop_group_599/small_shop_property_file_599_4.gif</property_file_path>
</small_image>
</property>
<property type="WYSIWYG" xml_name="general-text" id="3" parent_id="0" value_id="5">
<name>Текст</name>
<value></value>
<default_value></default_value>
<order>2</order>
</property>
</propertys>
</group>
<group id="602" parent="600">
<name>Битумная черепица</name>
<description>Описание раздела битумная черепица</description>
<image width="800" height="800">/upload/shop_7/shop_group_602/shop_group_image602.jpg</image>
<small_image width="101" height="101">/upload/shop_7/shop_group_602/small_shop_group_image602.jpg</small_image>
<order>0</order>
<indexation>1</indexation>
<path>bitum_tile</path>
<fullpath>materials/bitum_tile/</fullpath>
<count_items>14</count_items>
<count_groups>0</count_groups>
<count_all_items>14</count_all_items>
<count_all_groups>0</count_all_groups>
<seo_title></seo_title>
<seo_description></seo_description>
<seo_keywords></seo_keywords>
<propertys>
<property type="String" xml_name="pricelist-title" id="5" parent_id="0" value_id="29">
<name>Текст в прайс-листе</name>
<value>Битумная черепица (Доставка бесплатно)</value>
<default_value></default_value>
<order>0</order>
</property>
<property type="File" xml_name="pricelist-group" id="4"
parent_id="0" value_id="9">
<name>Скачать прайслист</name>
<value>gibkay.xls</value>
<default_value></default_value>
<order>1</order>
<property_file_path size="663552">/upload/shop_7/shop_group_602/shop_property_file_602_4.xls</property_file_path>
<small_image>
<value>icon-excel.gif</value>
<property_file_path width="29" height="34" size="806">/upload/shop_7/shop_group_602/small_shop_property_file_602_4.gif</property_file_path>
</small_image>
</property>
<property type="WYSIWYG" xml_name="general-text" id="3" parent_id="0" value_id="3">
<name>Текст</name>
<value></value>
<default_value></default_value>
<order>2</order>
</property>
</propertys>
</group>
<group id="605" parent="600">
<name>Фальцевая кровля</name>
<description>Описание раздела фальцевая кровля</description>
<image width="101" height="101">/upload/shop_7/shop_group_605/shop_group_image605.jpg</image>
<small_image width="101" height="101">/upload/shop_7/shop_group_605/small_shop_group_image605.jpg</small_image>
<order>0</order>
<indexation>1</indexation>
<path>fold_roof</path>
<fullpath>materials/fold_roof/</fullpath>
<count_items>1</count_items>
<count_groups>0</count_groups>
<count_all_items>1</count_all_items>
<count_all_groups>0</count_all_groups>
<seo_title></seo_title>
<seo_description></seo_description>
<seo_keywords></seo_keywords>
<propertys>
<property type="WYSIWYG" xml_name="general-text" id="3" parent_id="0" value_id="7">
<name>Текст</name>
<value></value>
<default_value></default_value>
<order>2</order>
</property>
</propertys>
</group>
</group>
Помогите реализовать следующую задачу:
Есть группы товаров, у которых свои подгруппы. У этих подгрупп есть доп. свойтва типа файл и строка. Через свойство файл цепляю прайс-лист по всем товарам относящимся к данной подгруппе. Возникла задача создать раздел прайс-лист, куда будут автоматом цеплятся ссылки на файлы из подгрупп, а название ссылки будет задаваться черех допсвойство строка. Выглядеть это будет примерно так - Сначала заголовок группы с картинкой от группы, а под ним список линков на прайсы подгрупп.
Реализовал все это на основе xsl шаблона "прайс-лист" (вот часть xsl)
.............
<!-- Шаблон "МагазинПрайс" -->
<xsl:template match="/shop">
<!-- Отображаем таблицу -->
<table style="width: 100%;" border="0" cellspacing="0" cellpadding="15">
<xsl:apply-templates select="//group"><xsl:sort select="@id" data-type="number" order="ascending"/></xsl:apply-templates>
</table>
</xsl:template>
<!-- Группы товаров -->
<xsl:template match="group">
<xsl:if test="@parent=0"> <!-- Проверяю группа это или нет, если да то далее вставляю изображение группы и ее название -->
<tr>
<!-- Изображение для товара, если есть -->
<td align="right" valign="top">
<xsl:if test="small_image != ''">
<a href="{/shop/path}{fullpath}"><img src="{small_image}" align="left" /></a>
</xsl:if>
</td>
<td>
<h1><xsl:value-of select="name"/></h1>
<!-- Далее работаю с подгруппами данной группы -->
<ul>
<li>
<a href="{group/propertys/property[@xml_name='pricelist-group']/property_file_path}">
<xsl:apply-templates select="group/propertys/property[@xml_name='pricelist-title']/value"/></a>
</li>
</ul>
</td>
</tr>
</xsl:if>
</xsl:template>
...................
Когда подгруппе всего один файл и соответствующее описание, то линк получается нормальным, однако если появляется еще одна (и более) подгрупп с прайсом то линк ссылается только на один прайс, а описание сливается в одну строку - ПрайсЛист1ПрайсЛист2 Как сделать чтобы ПрайсЛист1 ссылался на 1 прайс, ПрайсЛист2 на 2 прайс соответственно.
В xsl я не особо силен, видимо доп свойства обрабатываются по очереди, сначала из всех подгрупп свойство файл лепится одну ссылку, в потом тоже самое и со свойством строка происходит.
На всякий случай кусок xml
<group id="600" parent="0">
<name>Кровельные материалы</name>
<description>Описание раздела кровельных материалов</description>
<image width="101" height="101">/upload/shop_7/shop_group_600/shop_group_image600.jpg</image>
<small_image width="101" height="101">/upload/shop_7/shop_group_600/small_shop_group_image600.jpg</small_image>
<order>1</order>
<indexation>1</indexation>
<path>materials</path>
<fullpath>materials/</fullpath>
<count_items>0</count_items>
<count_groups>7</count_groups>
<count_all_items>50</count_all_items>
<count_all_groups>7</count_all_groups>
<seo_title></seo_title>
<seo_description></seo_description>
<seo_keywords></seo_keywords>
<propertys>
<property type="WYSIWYG" xml_name="general-text" id="3" parent_id="0" value_id="1">
<name>Текст</name>
<value></value>
<default_value></default_value>
<order>2</order>
</property>
</propertys>
<group id="599" parent="600">
<name>Металлочерепица</name>
<description>Описание раздела металлочерепица</description>
<image width="800" height="800">/upload/shop_7/shop_group_599/shop_group_image599.jpg</image>
<small_image width="101" height="101">/upload/shop_7/shop_group_599/small_shop_group_image599.jpg</small_image>
<order>0</order>
<indexation>1</indexation>
<path>metall</path>
<fullpath>materials/metall/</fullpath>
<count_items>5</count_items>
<count_groups>0</count_groups>
<count_all_items>5</count_all_items>
<count_all_groups>0</count_all_groups>
<seo_title></seo_title>
<seo_description></seo_description>
<seo_keywords></seo_keywords>
<propertys>
<property type="String" xml_name="pricelist-title" id="5" parent_id="0" value_id="28">
<name>Текст в прайс-листе</name>
<value>Металлочерепица (Доставка бесплатно)</value>
<default_value></default_value>
<order>0</order>
</property>
<property type="File" xml_name="pricelist-group" id="4"
parent_id="0" value_id="11">
<name>Скачать прайслист</name>
<value>metallocherepitca.xls</value>
<default_value></default_value>
<order>1</order>
<property_file_path size="299520">/upload/shop_7/shop_group_599/shop_property_file_599_4.xls</property_file_path>
<small_image>
<value>icon-excel.gif</value>
<property_file_path width="29" height="34" size="806">/upload/shop_7/shop_group_599/small_shop_property_file_599_4.gif</property_file_path>
</small_image>
</property>
<property type="WYSIWYG" xml_name="general-text" id="3" parent_id="0" value_id="5">
<name>Текст</name>
<value></value>
<default_value></default_value>
<order>2</order>
</property>
</propertys>
</group>
<group id="602" parent="600">
<name>Битумная черепица</name>
<description>Описание раздела битумная черепица</description>
<image width="800" height="800">/upload/shop_7/shop_group_602/shop_group_image602.jpg</image>
<small_image width="101" height="101">/upload/shop_7/shop_group_602/small_shop_group_image602.jpg</small_image>
<order>0</order>
<indexation>1</indexation>
<path>bitum_tile</path>
<fullpath>materials/bitum_tile/</fullpath>
<count_items>14</count_items>
<count_groups>0</count_groups>
<count_all_items>14</count_all_items>
<count_all_groups>0</count_all_groups>
<seo_title></seo_title>
<seo_description></seo_description>
<seo_keywords></seo_keywords>
<propertys>
<property type="String" xml_name="pricelist-title" id="5" parent_id="0" value_id="29">
<name>Текст в прайс-листе</name>
<value>Битумная черепица (Доставка бесплатно)</value>
<default_value></default_value>
<order>0</order>
</property>
<property type="File" xml_name="pricelist-group" id="4"
parent_id="0" value_id="9">
<name>Скачать прайслист</name>
<value>gibkay.xls</value>
<default_value></default_value>
<order>1</order>
<property_file_path size="663552">/upload/shop_7/shop_group_602/shop_property_file_602_4.xls</property_file_path>
<small_image>
<value>icon-excel.gif</value>
<property_file_path width="29" height="34" size="806">/upload/shop_7/shop_group_602/small_shop_property_file_602_4.gif</property_file_path>
</small_image>
</property>
<property type="WYSIWYG" xml_name="general-text" id="3" parent_id="0" value_id="3">
<name>Текст</name>
<value></value>
<default_value></default_value>
<order>2</order>
</property>
</propertys>
</group>
<group id="605" parent="600">
<name>Фальцевая кровля</name>
<description>Описание раздела фальцевая кровля</description>
<image width="101" height="101">/upload/shop_7/shop_group_605/shop_group_image605.jpg</image>
<small_image width="101" height="101">/upload/shop_7/shop_group_605/small_shop_group_image605.jpg</small_image>
<order>0</order>
<indexation>1</indexation>
<path>fold_roof</path>
<fullpath>materials/fold_roof/</fullpath>
<count_items>1</count_items>
<count_groups>0</count_groups>
<count_all_items>1</count_all_items>
<count_all_groups>0</count_all_groups>
<seo_title></seo_title>
<seo_description></seo_description>
<seo_keywords></seo_keywords>
<propertys>
<property type="WYSIWYG" xml_name="general-text" id="3" parent_id="0" value_id="7">
<name>Текст</name>
<value></value>
<default_value></default_value>
<order>2</order>
</property>
</propertys>
</group>
</group>
Мне абсолютно непонятен фрагмент
Вы применяете шаблон (но какой, где он описан?), естественно, что он применяется для первой группы. Вам нужно указывать просто
а потом вынести и сам новый тэмплэйт:
<!-- Далее работаю с подгруппами данной группы -->
<ul>
<li>
<a href="{group/propertys/property[@xml_name='pricelist-group']/property_file_path}">
<xsl:apply-templates select="group/propertys/property[@xml_name='pricelist-title']/value"/></a>
</li>
</ul>
<ul>
<li>
<a href="{group/propertys/property[@xml_name='pricelist-group']/property_file_path}">
<xsl:apply-templates select="group/propertys/property[@xml_name='pricelist-title']/value"/></a>
</li>
</ul>
Вы применяете шаблон (но какой, где он описан?), естественно, что он применяется для первой группы. Вам нужно указывать просто
<!-- Далее работаю с подгруппами данной группы -->
<ul>
<xsl:apply-templates select="group" mode="subgroup_price"/>
</ul>
<ul>
<xsl:apply-templates select="group" mode="subgroup_price"/>
</ul>
а потом вынести и сам новый тэмплэйт:
<xsl:template match="group" mode="subgroup_price">
<li>
<a href="{propertys/property[@xml_name='pricelist-group']/property_file_path}"><xsl:value-of select="propertys/property[@xml_name='pricelist-title']/value"/></a>
</li>
</xsl:template>
<li>
<a href="{propertys/property[@xml_name='pricelist-group']/property_file_path}"><xsl:value-of select="propertys/property[@xml_name='pricelist-title']/value"/></a>
</li>
</xsl:template>
Авторизация
