Модификации

#
Модификации
Подскажите пожалуйста кто знает:

вот есть код который выводит модификации:
<xsl:apply-templates select="modifications/item"/>

а вот темплейт который собственно отображает модификации:

<xsl:template match="modifications/item">
               <table width="670" border="0" cellspacing="0" cellpadding="0" style=" border-bottom:#ccc 1px solid; margin: 5px;">
                        <tr>
                        <td><xsl:if test="small_image != ''"><img src="{small_image}" alt="{name}" title="{name}" style=" border:#547E58 1px solid; margin: 5px;"/>...
...

            </xsl:template>

Собственно это работает и нужно...
НО нужно в этом шаблоне ещё показать модификации, только в другом визуальном исполнении.
Как это сделать?
#
Re: Модификации
Добавить доп свойство типа Чекбокс. Внутри темплейта проверить на заполнение и соответственно обернуть по-другому.

<xsl:template match="modifications/item">

<xsl:choose>
<xsl:when test="item_propertys/item_property[@xml_name='checkbox']/value != 0">
...

</xsl:when>
<xsl:otherwise>

...

</xsl:otherwise>
</xsl:choose>

...
Cоздание сайтов на базе HostCMS: верстка и интеграция макетов, настройка, обновление системы, консультации.
#
Re: Модификации
Всё сложнее. Есть доп свойство типа список, согласно этому списку меняется и отображение страници.
Вот только модификации наверно надо менять по id ...?
тоесть эту строчку
<xsl:when test="item_propertys/item_property[@xml_name='checkbox']/value != 0">
надо наверно сделать чтобы условие было, что если в списке выбран пункт с определённым id то выполныется...
#
Re: Модификации
Да и это не работает
По всей видимости другой темплейт и доп. свойства для товара там не работают...?
#
Re: Модификации
kvasiliy

Давайте уточним - у вас есть доп свойство тип Список, список содержив варианты отображения.
Допустим таблицей, списком. Вы собираетесь менять отображение для определенных модификаций в админке или вам на странице товара со списком модификаций нужно менять их отображение выбирая значения из списка?
Cоздание сайтов на базе HostCMS: верстка и интеграция макетов, настройка, обновление системы, консультации.
#
Re: Модификации
Допустим создали доп свойство типа список и в списке три пункта: Шаблон 1; Шаблон 2 и Шаблон 3 Следующим ниже примером обрабатываю вывод страници товаров:

<xsl:template match="item">
...
<xsl:choose>
<!--Если выбор в списке доп св-ва сделан сделан-->
                  <xsl:when test="property[@xml_name = 'shabloni']/node() and property[@xml_name = 'shabloni']/value != ''">
                     <!--вывод первой нестандартной страници товара-->
                     <xsl:if test="property[@xml_name = 'shabloni']/value = 'шаблон 1'">
тут видимое содержимое например без сопутствующих но с модификациями в виде таблици и с рекламным блоком
<xsl:apply-templates select="modifications/item"/> // показываем на темплейт модификаций ниже (выводим модификации таблицей у каждой модификации показаны её доп свойства)
</xsl:if>
[@xml_name = 'shabloni']/value = 'шаблон 2'">
тут видимое содержимое например без сопутствующих но с модификациями в виде блоков и у каждой модификации оценки и тд и с рекламным блоком
<xsl:apply-templates select="modifications/item"/> // показываем на темплейт модификаций ниже (выводим модификации блоками с оценками к каждой модификации)
</xsl:if>
[@xml_name = 'shabloni']/value = 'шаблон 3'">
тут видимое содержимое например с сопутствующими но без модификаций и без рекламы
</xsl:if>
...

</xsl:when>
   <!--иначе если выбр в списке доп свойства не выбран то выводим стандартный вид страници товара-->               <xsl:otherwise>
...
тут собственно код стандартного вида
...
</xsl:otherwise>
               </xsl:choose>
...
</xsl:template>

<xsl:template match="modifications/item">
              тут обработка и показ модификаций...
но тут почему-то обработка по доп свойству "родительского" товара не действует...
...

            </xsl:template>


Как видите в двух случаях надо вывести модификации, но модификации должны выводится по разному...
#
Re: Модификации
Вывести модификации по-разному можно применяя разные темплейты для них c помощью разных mode и тогда полагаю не надо делать проверку на доп свойства в одном темплейте как вы собираетесь.



<xsl:if test="property[@xml_name = 'shabloni']/value = 'шаблон 1'">
тут видимое содержимое например без сопутствующих но с модификациями в виде таблици и с рекламным блоком

<xsl:apply-templates select="modifications/item" mode="first" /> // показываем на темплейт модификаций ниже (выводим модификации таблицей у каждой модификации показаны её доп свойства)
</xsl:if>


<xsl:if test="property[@xml_name = 'shabloni']/value = 'шаблон 2'">
тут видимое содержимое например без сопутствующих но с модификациями в виде таблици и с рекламным блоком

<xsl:apply-templates select="modifications/item" mode="second" /> // показываем на темплейт модификаций ниже (выводим модификации таблицей у каждой модификации показаны её доп свойства)
</xsl:if>
....

</xsl:template>

....

<xsl:template match="modifications/item" mode="first">

....

</xsl:template>

<xsl:template match="modifications/item" mode="second">

....

</xsl:template>



Надеюсь понятно.

А вообще покажите xml, если мой вам вариант все-таки не поможет решить задачу.
Cоздание сайтов на базе HostCMS: верстка и интеграция макетов, настройка, обновление системы, консультации.
#
Re: Модификации
Точно!!! То что нужно!!! Спасибо большое!
#
Re: Модификации
ещё вопрос в догонку:
<xsl:template match="modifications/item" mode="second">
....

<xsl:if test="count(property) > 0">                     
<xsl:apply-templates select="/shop/properties_items_dir"/>
                  </xsl:if>

....

</xsl:template>

В темплейте модификации пытаюсь вывести доп свойства которые есть у модификации, но выводятся доп свойства  родительского товара.

Можно ли вообще в списке модификаций на странице товара вывести ещё и доп свойства модификаций к каждой модификации?
#
Re: Модификации
kvasiliy писал(а):
но выводятся доп свойства родительского товара.


Правильно потому что вы и вызываете темплейт доп своств родительского товара.

<xsl:apply-templates select="/shop/properties_items_dir"/>


Полагаю для примера надо так, вообще все в xml есть... почему вы туда не смотрите =)


<xsl:template match="modifications/item" mode="second">
....

<xsl:if test="count(property[@xml_name='item_color']) > 0">


<xsl:value-of select="property[@xml_name='item_color']/value"/>

</xsl:if>

....

</xsl:template>
Cоздание сайтов на базе HostCMS: верстка и интеграция макетов, настройка, обновление системы, консультации.
Авторизация