Задача - вывести сабж. Может, у кого-то есть идеи проще чем я изложу. По форуму полазил, не нашел ничего такого!
Моя первая реализация:
В 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 варианте. Или что-то другое по сабжу.
