Столкнулся с задачей реализовать фильтрацию товаров по меткам внутри текущей группы.
Для этого должно выполнятся три условия.
1) Заходим в группу - видим там облако тегов, которое соответствует только тем товарам, которые принадлежат данной группе.
2) При фильтре по одной из этих меток - остаются только те товары, которые принадлежат данной группе.
3) Хлебные крошки должны соответствовать той группе, в которой мы находились перед фильтрацией по метке. URL - желательно тоже, но это в идеале.
В результате раскопок по форуму нашел решение только части № 1 вопроса:
Вывожу облако тегов таким образом:
<?php
if (class_exists('shop'))
{
$shop = & singleton('shop');
$property = array();
if (isset($GLOBALS['shop_item_path']['group']) && $GLOBALS['shop_item_path']['group'])
{
$property['In'] = array(0);
$shop_current_group_id = intval($GLOBALS['shop_item_path']['group']);
$aSubGroup = $shop->GetGroupsTree($shop_current_group_id, to_int($GLOBALS['LA']['shop_id']));
// Записываем выбранные подгруппы в массив
foreach($aSubGroup as $group_id => $value)
{
$aItemsInGroup = $shop->GetAllItems(to_int($GLOBALS['LA']['shop_id']), $group_id);
if (is_array($aItemsInGroup) && count($aItemsInGroup) > 0)
{
foreach ($aItemsInGroup as $aItemRow)
{
$property['In'][] = $aItemRow['shop_items_catalog_item_id'];
}
}
}
}
/* Отображаем тэги */
$shop->ShowTagsCloud(to_int($GLOBALS['LA']['shop_id']), 'ОблакоТэговМагазин', $property);
}
?>
Но при фильтрации по метке выводятся вообще все товары, которые соответствуют данной метке.
P.S: Предвижу совет решить вопрос дополнительными свойствами в виде списков. Уже думал об этом, но в данном конкретном случае так не получится.