Как в группе у товаров вывести значение доп. свойства список?

#
Как в группе у товаров вывести значение доп. свойства список?
У товаров есть доп свойства типа список.
Мне нужно в группе для каждого товара получить значение (value) этого свойства.

Вывожу так:
<xsl:if test="count(/shop/shop_item_properties//property[filter != 0 and type = 3])">
   <xsl:for-each select="/shop/shop_item_properties//property[filter != 0 and type = 3]">
      <xsl:variable name="propertyId">property_<xsl:value-of select="@id"/></xsl:variable>
      <xsl:value-of select="$propertyId"/>
   </xsl:for-each>
</xsl:if>

В итоге получаю для каждого товара:
property_17
property_18
А как cюда добавить выбранное значение?
Чтобы получить::
property_17_0 (доп свойство 17 не указано)
property_18_1 (в доп свойстве  18 выбрано первое из списка)
#
Re: Как в группе у товаров вывести значение доп. свойства список?
Значение доп свойства хранится в теге value который находится внутри property_value. Если вам нужно вывести все значения определенного свойства то просто делайте обход всех value с ограничением по property_id.
«Не выходи из комнаты, не совершай ошибку…»
Модератор
#
Re: Как в группе у товаров вывести значение доп. свойства список?
Вы работаете со списком доп. свойств /shop/shop_item_properties, а значения указываются у конкретного товара
см. https://www.hostcms.ru/documentation/modules/properties/xsl/
Вариант 1

Выводить можно будет, например, как
<xsl:variable name="property_id" select="@id" />
Значение: <xsl:value-of select="/shop/shop_item/property_value[property_id = $property_id]/value" />
#
Re: Как в группе у товаров вывести значение доп. свойства список?
value  - это я получаю значение (текст списка)
А как получить номер его?
Т.е в фильтре у меня:
  <select name="property_17">
    <option value="0">...</option>
    <option value="4">1.2 мм</option>
    <option value="5">1.5 мм</option>
    <option value="6">1.8 мм</option>
  </select>

Нужно получить, не 1.8 мм, а 6

Т.е. мне нужно в товар добавить не название, а класс, по которому эти товары будут сортироваться при изменении селекта фильтра.
Модератор
#
Re: Как в группе у товаров вывести значение доп. свойства список?
Идентификатор элемента, тот, что реально хранится в таблице значений, будет в теге list_item_id при типе свойства = 3 (список).
#
Re: Как в группе у товаров вывести значение доп. свойства список?
А можно пример XLS c list_item_id ?
Модератор
#
Re: Как в группе у товаров вывести значение доп. свойства список?
Идентификатор:
<xsl:value-of select="/shop/shop_item/property_value[property_id = $property_id]/list_item_id" />
#
Re: Как в группе у товаров вывести значение доп. свойства список?
Не выводится так....
У меня сейчас такая конструкция:

<xsl:variable name="myItem" select="." />
<xsl:if test="count(/shop/shop_item_properties//property[filter != 0 and type = 3])">
   <xsl:for-each select="/shop/shop_item_properties//property[filter != 0 and type = 3]">
      <xsl:variable name="propertyId" select="@id" />   
      <xsl:variable name="propertyN">property_<xsl:value-of select="@id"/></xsl:variable>
      <xsl:value-of select="$propertyN"/> -
      <xsl:value-of select="$myItem/property_value[property_id = $propertyId]/list_item_id"/> -
      <xsl:value-of select="$myItem/property_value[property_id = $propertyId]/value"/> <br />
   </xsl:for-each>
</xsl:if>   


Результат:
property_17 - - 1.2 мм
Получаю номер свойства, название выбранного поля списка ,а идентификатор не выводится
#
Re: Как в группе у товаров вывести значение доп. свойства список?
Проверьте есть ли у вас list_item_id внутри property_value. Если этого тега нет то вероятно нужно обновить систему до актуальной версии.
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Как в группе у товаров вывести значение доп. свойства список?
<xsl:value-of select="$myItem/property_value[property_id = $propertyId]"/>
Выводит:
17 0 sp2 1.8 мм
17 - Номер доп свойства
0 - не знаю что
sp2 - XML-тег доп свойства
1.8 мм  - имя выбранное в списке.
А идентификатора нет

Обновил систему, сейчас:
Версия HostCMS: 6.8.5
Редакция: Малый бизнес
Авторизация