if test="item" или вывод товаров из подкатегорий категорий магазина

#
if test="item" или вывод товаров из подкатегорий категорий магазина
Примерный вид содержимого магазина:

Магазин
-категория
--товар0
--подкатегория
---подподкатегория
----подподкатегория
-----товар1
-----подподподкатегория
------товар2
------товар3
Список параметров для вывода:

if (class_exists('shop'))
   {
      $shop = & singleton('shop');

      $shop_id = '3';

      $param = array();

      // Товары выбираем из всех групп
      $param['current_group_id'] = false;
      $param['xml_show_group_type'] = 'all';

      // Выводим по 4 товара в блока
      $param['items_on_page'] = 8;

      // Используем случайный вывод товара
      $param['items_order'] = 'rand';

  
      // Получаем все скидки магазина
      $AllDiscount = $shop->GetAllDiscounts($shop_id);

      // Скидки есть
      if ($AllDiscount)
      {
         $param['select_discount'] = array();

         // Цикл по полученным скидкам
         while ($row = mysql_fetch_assoc($AllDiscount))
         {
            // В массив добавляем идентификаторы скидок
            $param['select_discount'][] = $row['shop_discount_id'];
         }
      }


$shop->ShowShop($shop_id, 'МагазинКаталогТоваровНаГлавнойHPRU', $param);

   }

Для вывода используется такой XSL шаблон:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <!-- МагазинКаталогТоваровНаГлавнойСпецПред -->
   <xsl:template match="/">
         <xsl:apply-templates select="/shop"/>
   </xsl:template>
   
   <!-- Шаблон для магазина -->
   <xsl:template match="/shop">
      <!-- Есть товары -->
<xsl:if test="item">
         <!-- Выводим товары магазина -->
         
            <xsl:apply-templates select="item"/>
         
      </xsl:if>
      
   </xsl:template>
   <!-- Шаблон для товара -->
   <xsl:template match="item">
      <div class="item_display"><div class="item_display_inner">
      <div class="good_block">
         <div class="index_item_title">
            <a href="{/shop/path}{fullpath}{path}/" title="{name}">
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </a>
         </div>
         <!-- Указана малое изображение -->
         <xsl:if test="small_image != ''">
            <!-- style="background-image: url('/images/site15/good_background.jpg'); background-repeat: no-repeat; border: 0px solid;  width: 151px; height: 124px;" -->
            <a href="{/shop/path}{fullpath}{path}/">
               <img src="{small_image}" alt="{name}" title="{name}" />
            </a>
            <!--<div class="hit" style="margin: {small_image/@height - 35}px 0 0 90px;"></div>-->
         </xsl:if>
      </div>
      
      <div class="dcc">
      
      <div class="deteils"><div class="inner"><xsl:value-of disable-output-escaping="yes" select="price_discount"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="currency"/>
      <div class="stars"><img src="/images/stars.gif"/></div></div>
   </div>
         <!--<img align="left" alt="" src="/images/site15/d_c.jpg" />-->
         <div class="in_cart">
            <div class="inner">
               <a href="{/shop/path}cart/?action=add&amp;item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)" title="Купить" class="add_to_bask"></a>
            </div>
         </div>
         <div style="clear: both" />
         <!--<a href="{/shop/path}cart/?action=add&amp;item_id={@id}" ><img alt="" src="/images/site15/add_card.jpg" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)" /></a>-->
      </div></div>
      </div>
      
      <xsl:if test="1=0">
         <div class="shop_item">
            <div class="left" style="text-align: center; position: relative;">
               
               <p>
                  <a href="{/shop/path}{fullpath}{path}/" title="{name}">
                     <xsl:value-of disable-output-escaping="yes" select="name"/>
                  </a>
               </p>
               
               <p>
                  <!-- Цена -->
                  <b>
                     <xsl:value-of disable-output-escaping="yes" select="price_discount"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="currency"/>&#xA0;
                  </b>
                  
                  <!-- Ссылку на добавление в корзины выводим, если:
                  type = 0 - простой тип товара
                  type = 1 - электронный товар, при этом остаток на складе больше 0 или -1,
                  что означает неограниченное количество -->
                  <xsl:if test="type = 0 or (type = 1 and (eitem_count > 0 or eitem_count = -1))">
                     <a href="{/shop/path}cart/?action=add&amp;item_id={@id}" onclick="return AddIntoCart('{/shop/path}', {@id}, 1)">
                        <img alt="В корзину" title="В корзину" src="/hostcmsfiles/images/cart.gif"/>
                     </a>
                  </xsl:if>
               </p>
            </div>
         </div>
      </xsl:if>
      
      <xsl:if test="position() = round(/shop/items_on_page div 2)">
         <xsl:text disable-output-escaping="yes">
            
         </xsl:text>
      </xsl:if>
      
   </xsl:template>
</xsl:stylesheet>


Пока были товары в категориях — выводились они. Как только дописал парсер, который из прайсов поставщика забивает товары в соответствии с уровнем вложености (предварительно удалив лишнее содержимое каталога) и все товары стали размещаться в подкатегориях различного уровня вложености — данный шаблон начал выводить пустоту.

Пробовал сделать вывод по принципу http://www.hostcms.ru/forums/17/2625/ (нашел в http://www.hostcms.ru/support/faq/modules/shop/), но получаю Undefined variable: shop_item_path (при попытке заменить на shop_item_path_suffix) получаю то же самое.

При использовании
$param['current_group_id'] = false;
, насколько я понял, не выводит ничего через if test="item".

Можете подсказать способ реализации вывода, ссылки на актуальную информацию или примеры работающего кода?
#
Re: if test="item" или вывод товаров из подкатегорий категорий магазина
Ответ давался ранее по электронной почте.
Авторизация