Работа с дополнительными свойствами в HostCMS v. 6

Re: Работа с дополнительными свойствами в HostCMS v. 6
alexpimnev писал(а):
можно отсортировать в XSL шаблоне xsl:sort
это идея, но к сожалению у меня не получилось, т.к. мне не нужно выводить все property_value, а только одно доп. свойство с tag_name='img' и наименьшим id. Может кто знает как это сделать?
Re: Работа с дополнительными свойствами в HostCMS v. 6
glen,

Может сделать сортировку по id, и показывать только первый элемент ?
Re: Работа с дополнительными свойствами в HostCMS v. 6
glen,
не вижу проблемы
<xsl:template match="shop_item">
   <xsl:apply-templates select="property_value[tag_name='img' and file_small != '']" mode="img">
      <xsl:sort select="id" data-type="number" order="ascending" />
   </xsl:apply-templates>
</xsl:template>

<xsl:template match="property_value" mode="img">
   <a href="{../dir}{file}" target="_blank">
      <img src="{../dir}{file_small}" alt="{file_description}" />
   </a>
</xsl:template>
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
Re: Работа с дополнительными свойствами в HostCMS v. 6
ulla проблема в том как показать только один элемент
alexpimnev спасибо за желание помочь, но приведенный код так же выводит ВСЕ property_value, а нужно только одно.
<xsl:for-each select="property_value[tag_name='img']">
   <xsl:sort select="id" order="ascending"/>
</xsl:for-each>
так же выводит ВСЕ property_value с tag_name='img', думал можно в цикли найти минимальный id -> записать его в переменную -> потом при выводе использовать, НО как выяснялось переменные в XSL вроде как и не переменные, а указатели с ограниченной областью виденья и вытащить её значение из цикла не получается.
Аа-а-а XSL разрушает мой мозг, помогите...
Re: Работа с дополнительными свойствами в HostCMS v. 6
glen,
Цитата:
alexpimnev спасибо за желание помочь, но приведенный код так же выводит ВСЕ property_value, а нужно только одно.

тоже не вижу проблем
<xsl:template match="shop_item">
   <xsl:apply-templates select="property_value[tag_name='img' and file_small != ''][1]" mode="img">
      <xsl:sort select="id" data-type="number" order="ascending" />
   </xsl:apply-templates>
</xsl:template>

<xsl:template match="property_value" mode="img">
   <a href="{../dir}{file}" target="_blank">
      <img src="{../dir}{file_small}" alt="{file_description}" />
   </a>
</xsl:template>
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
Re: Работа с дополнительными свойствами в HostCMS v. 6
Как получить ИД инфоэлемента зная значения его 3 доп свойств?
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
Re: Работа с дополнительными свойствами в HostCMS v. 6
alexpimnev, спасибо не знал что так можно)). Но все равно печалька при таком явном выводе <xsl:sort> не работает и всегда выводиться первый элемент property_value (с максимальным id), а нужно последний (с минимальным id). Но предложенное вами решение наталкивает на мысль, а может можно как-нибудь получить(посчитать) общее количество roperty_value[tag_name='img']? т.к. по сути мне нужно вывести последний из них, что типа
<xsl:apply-templates select="property_value[tag_name='img' and file_small != ''][total]" mode="img">
Re: Работа с дополнительными свойствами в HostCMS v. 6
ferdinant,
для ИС думаю сами переделаете
$oShop_Items = Core_Entity::factory('Shop_Item');

$oShop_Items
   ->queryBuilder()
   ->leftJoin('shop_item_properties', 'shop_items.shop_id', '=', 'shop_item_properties.shop_id')
   ->leftJoin('property_value_ints', 'shop_items.id', '=', 'property_value_ints.entity_id',
      array(
         array('AND' => array('shop_item_properties.property_id', '=', Core_QueryBuilder::expression('`property_value_ints`.`property_id`')))
      )
   )
   ->open()
      ->where('shop_item_properties.property_id', '=', 46) // ID 1-го свойства
      ->where('property_value_ints.value', '=', 25)  // значение 1-го свойства
      ->setOr()
      ->where('shop_item_properties.property_id', '=', 8) // ID 2-го свойства
      ->where('property_value_ints.value', '=', 104)  // значение 2-го свойства
      ->setOr()
      ->where('shop_item_properties.property_id', '=', 2) // ID 3-го свойства
      ->where('property_value_ints.value', '=', 31)  // значение 3-го свойства
   ->close()
   ->where('shop_items.shop_id','=',1)
   ->where('shop_items.active','=',1)
   ->groupBy('shop_items.id')
   ->having(Core_Querybuilder::expression('COUNT(DISTINCT `shop_item_properties`.`property_id`)'), '=', 3);

$aShop_Items = $oShop_Items->findAll();

foreach($aShop_Items as $oShop_Item)
{
   echo "{$oShop_Item->name}<br />";
}
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
Re: Работа с дополнительными свойствами в HostCMS v. 6
glen,
поправил
<xsl:for-each select="property_value[tag_name='img' and file_small != '']">
   <xsl:sort select="@id" data-type="number" order="ascending" />
   <xsl:if test="position() = 1">
      <a href="{../dir}{file}" target="_blank">
         <img src="{../dir}{file_small}" alt="{file_description}" />
      </a>
   </xsl:if>
</xsl:for-each>
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
Re: Работа с дополнительными свойствами в HostCMS v. 6
ура, я нашел эту "волшебную" функцию last() и все заработало
<xsl:template match="shop_item">
   <xsl:apply-templates select="property_value[tag_name='img' and file_small != ''][last()]" mode="img"/>
</xsl:template>

<xsl:template match="property_value" mode="img">
   <a href="{../dir}{file}" target="_blank">
      <img src="{../dir}{file_small}" alt="{file_description}" />
   </a>
</xsl:template>

alexpimnev еще раз БОЛЬШОЕ спасибо  
Авторизация