Вывод товаров с суб. категорий если в категории 0 товаров.

Модератор
#
Re: Вывод товаров с суб. категорий если в категории 0 товаров.
пришлите запрос в поддержку со ссылкой на эту тему, посмотрим
#
Re: Вывод товаров с суб. категорий если в категории 0 товаров.
HostCMS,
запрос отправил в теме технические вопросы. Буду очень признателен за помощь в решении данной проблемы.
Кто не работает, тот ест! :-)
#
Re: Вывод товаров с суб. категорий если в категории 0 товаров.
Pascal писал(а):
Как оставить только подкатегории той, в которой нахожусь?
Это должно происходить автоматически. Абсолютно все категории выводятся только когда вы находитесь в корне магазина.
Заказов не беру. Консультирую редко.
#
Re: Вывод товаров с суб. категорий если в категории 0 товаров.
Kotoff,
Вот что мне ответила Служба поддержки В XSL-шаблоне каталога не во всех местах сменили @current_group_id на real_current_group_id. В 3х, если быть точным.

Самое интересное, что NotePad++ показал мне, что произведено 6 замен! Как то вот так.

Кто не работает, тот ест! :-)
#
Re: Вывод товаров с суб. категорий если в категории 0 товаров.
Выводится описание подгруппы вместо группы, где подправить подскажите пожалуйста.
#
Re: Re: Вывод товаров с суб. категорий если в категории 0 товаров.
А в 6-ой версии системы как реализовать подобный функционал?
Модератор
#
Re: Вывод товаров с суб. категорий если в категории 0 товаров.
html,
нужно писать своего наследника контроллера с выводом из подгрупп, готовые примеры доступны на странице http://www.hostcms.ru/forums/2/7122/
#
Re: Re: Вывод товаров с суб. категорий если в категории 0 товаров.
Чето не очень просто
#
Re: Вывод товаров с суб. категорий если в категории 0 товаров.
Приветствую. Встретил код Kotof в решении у "клиента", взятый, судя по всему, отсюда.
Пара вопросов к автору:

Это ведь правда рекурсивная функция с запросом внутри?
Цитата:
function getAllSubGroups($start_groups_id, $current_shop_id, $shop, $groups = array()) {
    // получим число групп и элементов в текущей группе и ее подгруппах.
    // подробнее см. API
    $count_groups = $shop->GetCountItemsAndGroups($start_groups_id, $current_shop_id, false);

    // если есть подгруппы
    if ($count_groups['count_groups'] > 0) {

        // получим ресурс с подгруппами текущей группы
        $resource = $shop->GetGroups($current_shop_id, $start_groups_id);

        // обработаем его
        while ($row = mysql_fetch_assoc($resource)) {

            // итеративно вызовем функцию getAllSubGroups на случай если у рассматриваемой группы
            // тоже есть подгруппы
            $groups = getAllSubGroups($row['shop_groups_id'], $current_shop_id, $shop, $groups);

            // добавим в массив группу id рассматриваемой группы
            $groups[] = $row['shop_groups_id'];
        }
    }
    return $groups;
}


Что в свою очередь означает, что если зайти в основной каталог, то сделается минимум столько же запросов к БД сколько групп в каталоге. В моём случае их было 47 +/-. Вам не кажется, что гораздо оптимальнее выбрать одним запросом все группы и в рекурсивной функции построить дерево? Тем более что вам нужны только связки ID в принципе, без остальных колонок. И еще. Количество групп и их связь меняется настолько редко, что построенное дерево вообще надо кэшировать на сутки и больше не трогать БД.

Второе:
Зачем давать заведомо замедляющие работу магазина "плюшки"?
Цитата:
            // зададим случайную сортировку
            $param['items_field_order'] = 'RAND()';

Это еще страшнее чем кажется для больших каталогов. Очень существенно замедляет выборку из БД. Да и вообще, принцип сортировки случайным образом в каждом запросе отменяет смысл пагинации наглухо.

Остальным - использовать такое решение не советую. Разве что как костыль.
Авторизация