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

#
Re: Фильтр для интернет-магазина
Попробую точнее выразиться:
Необходимо:
На главной странице магазина вывести случайно несколько товаров из разных разделов. А при входе в пустой раздел вывести несколько товаров из подраздела.
Заранее спасибо!
Модератор
#
Re: Фильтр для интернет-магазина
tomweb,
Вы бы сразу определялись что нужно

tomweb писал(а):
На главной странице магазина вывести случайно несколько товаров из разных разделов.

В качестве группы указываете ложь + указываете нужное количество товаров к отображению.

tomweb писал(а):
А при входе в пустой раздел вывести несколько товаров из подраздела.

Посмотрите поиском, в FAQ и полезных решениях, были готовые примеры.
Модератор
#
Re: Фильтр для интернет-магазина
Пример вывода в макете случайных товаров из группы и ее подгрупп:
<?php

// ID родительской группы
$group_id = 0;

// ID магазина
$shop_id = 1;

$param = array();
$param['items_on_page'] = 5;
$param['items_order'] = 'Rand';

$xsl_catalog = 'МагазинКаталогТоваров';


if (!function_exists('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['shop_groups_id'];
            if ($value1['shop_groups_id'] == $key)
            {
               $set[] = $key;
               SetGroups($mas_groups, $set);
            }
         }

      }
      return $set;
   }
}

$shop = & singleton('shop');

$external_propertys = array();

$mas_group = $shop->GetGroupsTree($group_id, $shop_id);

// в $in будет хранится массив подгрупп
$in = array($group_id);

$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 (' . implode(',', $in) . ') ';
$elements['value'] = '';
$elements['sufix'] = ')';
$param['select'][] = $elements;
$param['current_group_id'] = false;

$shop->ShowShop($shop_id, $xsl_catalog, $param, $external_propertys);
?>
#
Re: Фильтр для интернет-магазина
Добрый день. Столкнулся вот с подобной проблемой. Вроде как последний пример ее частично решил. но есть другая теперь проблема. Как в группе вывести элементы со всех ее подгрупп с нормальным постраничным выводом? В вашем примере постраничка выводится но работает неправильно.
Делаем лучшее
Модератор
#
Re: Фильтр для интернет-магазина
speedy,
Вы публикуете на главной странице с выводом страниц 1-2-3, ссылка с 1-2-3 идет просто на магазин, где уже нет такой фильтрации?
#
Re: Фильтр для интернет-магазина
как при входе в раздел вывести Горячие предложения раздела, а при входе в пустой раздел вывести Горячие предложения из подраздела?

Пробовала, если в шаблоне страницы где выводятся ГОорячие предложения изменить
$param['current_group_id'] = false ;
на
$param['current_group_id'] = $GLOBALS['shop_item_path']['group'];

то в подгруппах выводятся а в пустом разделе нет
как быть?
Email: golden-puma@yandex.ru; Skype: golden_puma; Telegram: @GoldenPuma; Сайт: https://goldenpuma.ru
#
Re: Фильтр для интернет-магазина
Как то непонятно работает. Выводит список товаров только в корне из всех систем. Хотелось бы чтобы в каждой категории видно было все из дерева ниже.
http://www.aiventa.ru
Модератор
#
Re: Фильтр для интернет-магазина
Puma, для решения вашей задачи перед вызовом метода показа магазина, используемого для отображения Горячих предложений вставьте следующий код

// Получаем информацию об элементах текущей группы
$param_item_group['shop_groups_id'] = $GLOBALS['shop_item_path']['group'];

$items_group_resource = $shop->GetItemByParam($param_item_group);

// В текущей группе отсутствуют товары
if (mysql_num_rows($items_group_resource) == 0)
{

    $mas_group = $shop->GetGroupsTree($GLOBALS['shop_item_path']['group'], $shop_id);

    // в $in будет хранится массив подгрупп
    $in = array($group_id);

    $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 (' . implode(',', $in) . ') ';
    $elements['value'] = '';
    $elements['sufix'] = ')';
    $param['select'][] = $elements;

    $param['current_group_id'] = false;
}
else
{
    $param['current_group_id'] = $GLOBALS['shop_item_path']['group'];
}

Модератор
#
Re: Фильтр для интернет-магазина
Обратите внимание, код функции изменился:
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;
}
#
Re: Фильтр для интернет-магазина
Ребят, вывел на главную товары этим методом. Хотелось бы под названием товара подписать в какой группе и подгруппе он находится. http://hostcms.ru/forums/17/3111/
http://www.aiventa.ru
Авторизация