Как корректно реализовать Списки

#
Как корректно реализовать Списки
Здравствуйте!
В Списках создал список ингредиентов для пиццы и привязал этот список к доп свойству. В XML выводятся и список (list, list_item) и доп свойства в товаре.
Подскажите, пожалуйста, как корректно вывести в XSL список под каждым товаром?

<!-- Шаблон для товара -->
<xsl:template match="shop_item">
    .....
</xsl:template>

Заранее благодарен за помощь.
#
Re: Как корректно реализовать Списки
Вывести значение доп свойства или сам список?
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Как корректно реализовать Списки
llirik,
Список значений, которые выбраны для данного товара. Например:

Название товара
Телятина
Лук
Помидор
Перец

Название товара
Свинина
Соус
Перец
Капуста

И т.д.
#
Re: Как корректно реализовать Списки
Пример стандартного вывода доп свойств в товары, измените под свои требования.

<xsl:apply-templates select="property_value[not(file/node())]"/>
   
   <!-- Show property item -->
<xsl:template match="property_value">
      <xsl:if test="value/node() and value != '' or file/node() and file != ''">
         <div class="shop_property item-margin-left">
            <xsl:variable name="property_id" select="property_id" />
            <xsl:variable name="property" select="/shop/shop_item_properties//property[@id=$property_id]" />

            <xsl:value-of select="$property/name"/><xsl:text>: </xsl:text>
            <span><xsl:choose>
                  <xsl:when test="$property/type = 2">
                     <a href="{../dir}{file}" target="_blank"><xsl:value-of select="file_name"/></a>
                  </xsl:when>
                  <xsl:when test="$property/type = 7">
                     <input type="checkbox" disabled="disabled">
                        <xsl:if test="value = 1">
                           <xsl:attribute name="checked">checked</xsl:attribute>
                        </xsl:if>
                     </input>
                  </xsl:when>
                  <xsl:otherwise>
                     <xsl:value-of disable-output-escaping="yes" select="value"/>
                     <!-- Единица измерения свойства -->
                     <xsl:if test="$property/shop_measure/node()">
                        <xsl:text> </xsl:text><xsl:value-of select="$property/shop_measure/name"/>
                     </xsl:if>
                  </xsl:otherwise>
            </xsl:choose></span>
         </div>
      </xsl:if>
</xsl:template>
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Как корректно реализовать Списки
llirik,
Спасибо! Получилось.
Подскажите, а как теперь отсортировать значения свойств по возрастанию тега sorting? Сейчас у меня такая ситуация:

<ul>
   <xsl:apply-templates select="property_value[not(file/node()) and property_id='127']"/>
</ul>
.....
<xsl:template match="property_value">
        <li><xsl:value-of disable-output-escaping="yes" select="value"/></li>
</xsl:template>
#
Re: Как корректно реализовать Списки
по sorting чего именно? У значений доп свойств нет сортировки.
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Как корректно реализовать Списки
llirik,
Да, в том то и дело. Есть только у элементов списка:

            <list_item id="955">
               <list_id>208</list_id>
               <value>Телятина</value>
               <sorting>10</sorting>
               <description></description>
               <icon></icon>
               <active>1</active>
               <user_id>20</user_id>
            </list_item>

По тегам sorting элементов списка можно сделать сортировку?
#
Re: Как корректно реализовать Списки
borisych,
можно
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Как корректно реализовать Списки
Вы можете через хук в propery_value передавать тег sorting со значением  от list_item
Пример хука здесь https://www.hostcms.ru/documentation/modules/properties/xsl/

Только:

$object->addXmlTag('sorting', $object->Property->sorting);


Нужно заменить на :


$object->addXmlTag('sorting', $object->List_Item->sorting);


После этого можно будет указать сортировку на xsl https://www.hostcms.ru/documentation/step-by-step/xslt/xsl%3Asort/
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Как корректно реализовать Списки
llirik,
Сделал. Есть изменения, но, к сожалению, сортировка работает некорректно. Подскажите, пожалуйста, что не так делаю?
В XML тег sorting появился и он содержит значения, которые указаны в порядке сортировки в списках. Тут все правильно.
В XSL сделал вот так:

<ul>
   <xsl:apply-templates select="property_value[not(file/node()) and property_id='127']">
      <xsl:sort select="sorting" order="ascending"/>
   </xsl:apply-templates>
</ul>
..........
<xsl:template match="property_value">
   <li>
      <xsl:if test="icon != ''">
         <i class="{icon}"></i>
      </xsl:if>
      <xsl:value-of disable-output-escaping="yes" select="value"/>
   </li>
</xsl:template>
Авторизация