Фильтр для интернет-магазина

#
Фильтр для интернет-магазина
Подскажите, пожалуйста, каким должно быть $element['name'] для следующего фильтра:
необходимо чобы выводились не все элементы интернет-магазина, а только элементы, принадлежащие текущей группе, и всем подгруппам, находящимся в этой группе.
Если устновить $param['current_group_id'] = true, то не выводятся элементы подгупп.
#
Re: Фильтр для интернет-магазина
А групп много? Можно попробовать сначала получить все группы, а потом указать их в фильтре
#
Re: Фильтр для интернет-магазина
zayolya, для того, чтобы вывести элементы определенной группы(даже те, которые находятся в ее подгруппах неограниченного уровня вложенности) попробуйте в типовую динамическую страницу для магазина добавить код, выделенный жирным, перед методом ShowShop(ВНИМАНИЕ! Код функции SetGroups в последних версиях системы уже имеется стандартно в коде данной типовой, поэтому нужно просто убедиться, что он там есть, и в этом случае его добавления не требуется):
function SetGroups($mas_groups, $set)
{
   $mas_groups = to_array($mas_groups);
   foreach ($mas_groups as $key=>$value)
   {
      foreach ($value as $key1=>$value1)
      {
         $set[] = $value1;
         if ($value1 == $key)
         {
            $set[] = $key;
            SetGroups($mas_groups, $set);
         }
      }
   }
   return $set;
}

/* Вывод списка */
if(!$GLOBALS['shop_item_path']['item'])
{
$mas_group = array();
$mas_group = $shop->GetGroupsTree($GLOBALS['shop_item_path']['group'],
$current_shop_id, $mas_group);
$set = array();
$set = SetGroups($mas_group, $set);
$elements = array();

$in = $GLOBALS['shop_item_path']['group'];

foreach ($set as $key => $value)
{
        $in .= ','.$value;
}

$elements['type']=0;
$elements['prefix'] = ' and (';
$elements['name'] = 'shop_items_catalog_table.shop_groups_id';
$elements['if'] = ' IN ('.$in.') ';
$elements['value'] = '';
$elements['sufix']=')';
$param['select'][]=$elements;
$param['current_group_id']=false;


$GLOBALS['shops']->ShowShop($current_shop_id, $xsl_catalog, $param, $external_propertys);
#
Re: Фильтр для интернет-магазина
подскажите, не изменился ли этот способ?

сейчас в тип. дин. странице появилась функция setgroups

задача - вывести в корне элементы одной группы (и ее подгрупп)

вместо

$param['current_group_id'] = $GLOBALS['shop_item_path']['group']; // корневая группа


вставили

if ($GLOBALS['shop_item_path']['group']==0) {

$mas_group = array();

$mas_group = $shop->GetGroupsTree($GLOBALS['shop_item_path']['group'],
$current_shop_id, $mas_group);
$set = array();
$set = SetGroups($mas_group, $set);
$elements = array();

$in = 123;

foreach ($set as $key => $value)
{
        $in .= ','.$value;
}

$elements['type']=0;
$elements['prefix'] = ' and (';
$elements['name'] = 'shop_items_catalog_table.shop_groups_id';
$elements['if'] = ' IN ('.$in.') ';
$elements['value'] = '';
$elements['sufix']=')';
$param['select'][]=$elements;
$param['current_group_id']=false;
}

else
{
$param['current_group_id'] = $GLOBALS['shop_item_path']['group']; // корневая группа
}


(123 - id группы)

выодятся все равно элементы всех групп, есть ли ошибки в этом способе?
Модератор
#
Re: Фильтр для интернет-магазина
h4mpy, если необходимо отобразить товары определенной группы (в Вашем случае группы с идентификатором 123), включая товары вложенных групп, то приведенный Вами код должен выглядеть следующим образом:  

if ($GLOBALS['shop_item_path']['group']==0) {

$mas_group = array();

$in = 123;

$mas_group = $shop->GetGroupsTree($in,
$current_shop_id, $mas_group);

$set = array();
$set = SetGroups($mas_group, $set);
$elements = array();

foreach ($set as $key => $value)
{
        $in .= ','.$value;
}

$elements['type']=0;
$elements['prefix'] = ' and (';
$elements['name'] = 'shop_items_catalog_table.shop_groups_id';
$elements['if'] = ' IN ('.$in.') ';
$elements['value'] = '';
$elements['sufix']=')';
$param['select'][]=$elements;
$param['current_group_id']=false;
}

else
{
$param['current_group_id'] = $GLOBALS['shop_item_path']['group']; // корневая группа
}
#
Re: Фильтр для интернет-магазина
А как сделать так, чтобы на всех страницах магазина выводилось по одному товару из разных раздело?
Заранее спасибо!
Модератор
#
Re: Фильтр для интернет-магазина
tomweb,
При показе списка товаров магазина указать:
1. Количество товаров - 1
2. Группу - false
3. Сортировку товаров - случайную.
#
Re: Фильтр для интернет-магазина
Спасибо! Извиняюсь, я не до конца выразил свою мысль! Необходимо, чтобы при в ходе в раздел выводился товар из текущего раздела.
Модератор
#
Re: Фильтр для интернет-магазина
tomweb,
Тогда в качестве ID группы передайте $GLOBALS['shop_item_path']['group']
#
Re: Фильтр для интернет-магазина
Спасибо, работает! Но еще хотелось бы, чтобы если раздел пустой, выводился товар из подраздела!
Авторизация