Количество товаров в категории от одного производителя

#
Количество товаров в категории от одного производителя
Задача - вывести сабж. Может, у кого-то есть идеи проще чем я изложу. По форуму полазил, не нашел ничего такого!

Моя первая реализация:
В xsl-шаблоне КаталогТоваров:

<xsl:template match="producerslist/producer">
      
<xsl:variable name="id_prod" select="@id"/>
<xsl:variable name="parent_group_id" select="/shop/real_current_group_id"/>

...

<xsl:value-of select="count(/shop/item[@group = $parent_group_id or @group = /shop/group[@id = $parent_group_id]/group[@parent = $parent_group_id]/@id]/producer[@id = $id_prod])"/>

...

</xsl:template>


Но этот код считает по товарам только на текущей странице, то есть если больше 1 страницы в каталоге он не подходит.

Вариант 2:
В динамической странице Интернет-магазин:

       // Получаем всех производителей данной страницы и пускаем их в цикл
    $param_p['shop_id'] = $current_shop_id;
    $param_p['current_group_id'] = $param['current_group_id'];
    $param_p['begin'] = 0;
    $param_p['count'] = 999;
    $resource = $shop->GetAllProducers($param_p);

   
    if($resource > 0)
    {
       while($row = mysql_fetch_assoc($resource))
       {
         // Получаем количество товаров для каждого производителя
         $group_id = $param['current_group_id'];
         
         $element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
         $element['name'] = 'shop_producers_list_id';
         $element['prefix'] = 'AND'; // префикс
         $element['if'] = '='; // Условие
         $element['value'] = $row['shop_producers_list_id'];
         $element['sufix'] = '';
         $param_c['select'][] = $element;

         $count = $shop->GetCountItemsWithConditions($current_shop_id, $group_id, $param_c);
         
         unset($param_c['select'], $element);
         
         // И передаем под видом "producer_$id"
         $external_propertys['producer_'.$row['shop_producers_list_id']] = $count;
       }
    }
      $shop->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);


В итоге в xml получаем такой кусок кода:

<shop id="3" current_group_id="596">
   <user_id>0</user_id>
   <real_current_group_id>596</real_current_group_id>
   <producer_42>7</producer_42>
   <producer_43>3</producer_43>
   <producer_44>1</producer_44>
   <producer_45>4</producer_45>
   <producer_48>6</producer_48>
   <producer_49>1</producer_49>
   <producer_50>1</producer_50>
   <producer_52>6</producer_52>
   <producer_53>3</producer_53>
   <producer_55>1</producer_55>
   <producer_56>5</producer_56>
   <producer_57>1</producer_57>


Но вот только вывести их не так просто оказалось.. Кажется я напрасно сделал такую привязку по id. Я в xsl не очень разбираюсь, может кто подскажет как их вывести в таком же xsl-шаблоне как в 1 варианте. Или что-то другое по сабжу.
#
Re: Количество товаров в категории от одного производителя
Сделал Может кому полезно будет.

В динамической странице поставил такой вывод:

                $external_propertys['count_tov'] .= $row['shop_producers_list_id'] .'-'. $count .';';


В результате в xml вывело:

                <count_tov>42-11;43-2;46-1;50-1;51-2;52-2;54-1;56-2;57-2;58-2;59-3;</count_tov>


И в xsl разделал строку:

                <xsl:variable name="id_prod" select="@id"/>
      <xsl:variable name="count_t" select="/shop/count_tov"/>
      <xsl:variable name="count_t2" select="substring-after($count_t,$id_prod)"/>
      <xsl:variable name="count_t3" select="substring-after($count_t2,'-')"/>
      <xsl:variable name="count_t4" select="substring-before($count_t3,';')"/>


В результате $count_t4 количество товаров бренда с ид - $id_prod в текущей категории и ее подкатегориях.
Авторизация