Отображение нескольких складов

#
Отображение нескольких складов
Создаю тему. т.к. очень интересна реализация такой возможности в 6 версии.

Подскажите пожалуйста, как сделать так чтобы в карточке товара отображалось не общее количество товара на всех складах, а отдельно по каждому складу.

Склад 1 — …шт.
Склад 2 — …шт.
Склад 3 — …шт.

тема для 5 версии здесь

в 6 версии
Имеем исходный код:
         <!-- Количество на складе для не электронного товара -->
         <xsl:if test="rest &gt; 0 and type != 1">
      <div class="shop_property">В наличии: <span><xsl:value-of disable-output-escaping="yes" select="rest"/><xsl:text> </xsl:text><xsl:value-of disable-output-escaping="yes" select="shop_measure/name"/></span></div>
         </xsl:if>


Подскажите пожалуйста.
Модератор
#
Re: Отображение нескольких складов
1. Создаем файл modules/shop/item/observer.php
<?php

defined('HOSTCMS') || exit('HostCMS: access denied.');

class Shop_Item_Observer
{
   static public function onBeforeRedeclaredGetXml($object, $args)
   {
      $object->showXmlWarehousesItems(TRUE);
   }
}


2. В файл bootstrap.php в самый конец добавляете
Core_Event::attach('shop_item.onBeforeRedeclaredGetXml', array('Shop_Item_Observer', 'onBeforeRedeclaredGetXml'));


3. В XSL-шаблон товара добавляете
   <xsl:template match="shop_item">

...

      <h2>Остатки на складах</h2>
      <xsl:apply-templates select="shop_warehouse_item" />

4. Ту да же добавляете отдельный template
   <xsl:template match="shop_warehouse_item">
      <xsl:variable name="shop_warehouse_id" select="shop_warehouse_id" />
      <p><xsl:value-of select="/shop/shop_warehouse[@id = $shop_warehouse_id]/name" /><xsl:text>: </xsl:text><strong><xsl:value-of select="count" /></strong><xsl:text> </xsl:text><xsl:value-of select="../shop_measure/name" /></p>
   </xsl:template>


5. Работать будет с версии 6.0.8
#
Re: Отображение нескольких складов
Воспользовался данным костыльком, но что-то не хочет выводить только склады, на которых имеется текущий товар.
Подскажите пожалуйста, какой параметр проверять на 0?
Устал подставлять имеющиеся имена, очевидно какое-то не присутствующее здесь значение нужно извлечь..?
Модератор
#
Re: Отображение нескольких складов
<xsl:apply-templates select="shop_warehouse_item[count &gt; 0]" />
#
Re: Re: Отображение нескольких складов
Ёмаё, а я проверял так:
<xsl:if test="count(shop_warehouse_item) &gt; 0">
...
</xsl:if>

И что только не подставлял вместо "shop_warehouse_item"
Спасибо, работает
Модератор
#
Re: Отображение нескольких складов
Alex Vin,
пожалуйста. в Вашем примере нужно было проверять просто на count
<xsl:if test="count &gt; 0">
...
</xsl:if>

чтобы не гадать, просто включаете XML и смотрите имена тегов.
#
Re: Отображение нескольких складов
HostCMS,
так и делал, просто выводимый в инспекторе "shop_warehouse_item" не помогал, и я как начал все подряд проверять от отчаяния
Всего-то нужно было count проверять по другому))
Еще раз спасибо
#
Re: Отображение нескольких складов
Подскажите, в версии -  6.9.0, поменялся вывод складов?
После этих манипуляций в карточке какие-то цифры выводятся:
#
Re: Отображение нескольких складов
Все работает. Разобрался.
Авторизация