Форум пользователей Impera CMS
Impera CMS - отличный движок для лёгкого создания интернет магазина.
Обладает невероятным количеством функций, необходимых в онлайн торговле.

Следить
Главная
12:25
28 мая
#
?
написал:

Здравствуйте, на странице родительской категории, в которую влюжены другие категории с товарами, выводятся ВСЕ товары из дочерних категорий,

а как сделать в родительской категории выводить товары, принадлежащие только своей категории?

Я так понял, судя по демо версии, это включено по дефолту и в настройках админки такой функции нет? Это вроде как стандартная настройка в админке в магазинах, показывать или нет товары из подкатегорий.

На форуме похожая тема есть но там не то,

у меня в файле products.tpl

    {* <!-- если существует список товаров --> *}
    {if isset($products) && is_array($products) && !empty($products)}


        {* <!-- перебираем товары --> *}
        {foreach $products as $r}

            {* <!-- подключаем карточку товара --> *}
            {include file = 'common/products/card-2.htm'
                     item = $r
                     maxsize_name = 60
                     maxsize_descr = 300}
        {/foreach}
16:32
28 мая
#
написал:

Спасибо, я обратил внимание, действительно, в Импере вообще нет настройки (флажка) по выводу в категорию только ее личных товаров. Пока настройка не появилась в движке, придется вручную исправить в файле http://сайт/objects/Selector.php следующие строки (серым цветом показаны комментируемые строки, синим - добавляемые). Исправления начинаются в строке 1032 этого файла.

    ...
    ...

    // если выбранная категория/бренд не является информативной страницей,
    // готовимся читать список товаров в ней
    if ((empty($category) || ($category->informative != 1))
    && (empty($brand) || ($brand->informative != 1))) {
        $params = new stdClass;
        $params->sort = $this->sort_products_mode;
        $params->sort_direction = $this->sort_products_direction;
        $params->sort_laconical = $this->sort_products_laconical;
        $params->type = TYPE_PRODUCTS_ANY;
        $params->discount = isset($this->user->discount) ? $this->user->discount : 0;
        $params->price_id = isset($this->user->price_id) ? $this->user->price_id : 0;
        $params->section = $this->now_in_section;
        if (($USD_cost_from != 0)) $params->search_cost_from = $USD_cost_from;
        if ($USD_cost_to != 0) $params->search_cost_to = $USD_cost_to;
        // $params->category = &$category;                                  <-- это строка 1032
 
// отбираем только личные товары текущей категории
if (isset($category->category_id)) $params->category_id = $category->category_id;
 
        $params->brand = &$brand;
        $params->properties = &$filter;
        $params->enabled = 1;
        if (!isset($this->user->user_id)) $params->hidden = 0;

        ...
        ...


Так как данные изменения вносятся в метод fetch_products класса, ответственного за селекцию товаров для клиентской стороны, то изменения не затрагивают админпанель, и в ней список товаров отображается по-прежнему. В следующих версиях движка изменения делать не придется, они будут организованы через флажок в настройках страницы категорий в админпанели.

Если же магазин по аналогии с категориями использует вложенные суббренды (некоторые головные компании имеют подразделения или торговые марки), скажем:

  • Matsushita Electric Industrial
    • National
    • National Panasonic
    • Panasonic
    • Technics
    • Quasar

то задача вывода исключительно личных товаров как в категориях, так и на страницах брендов в том числе, сводилась бы еще ко второй правке на строке, которая до первой правки имела номер 1033:

        // $params->brand = &$brand;                               <-- это бывшая строка 1033
 
// отбираем только личные товары текущего бренда
if (isset($brand->brand_id)) $params->brand_id = $brand->brand_id;
 
        $params->properties = &$filter;
        $params->enabled = 1;
        if (!isset($this->user->user_id)) $params->hidden = 0;

        ...
        ...


Впрочем, ювелирно точная правка такой функции требует внести аналогичные правки в строки 957 и 958 того же файла, чтобы фильтр не наполнялся названиями вариантов товаров из вложенных категорий / брендов, что существенно лишь для магазинов, какие пользуются секцией фильтра "Варианты".

13:19
29 мая
#
?
написал:

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

16:01
30 мая
#
?
написал:

Также перестали выводиться товары в других категориях если в админке выбрано "показывать в нескольких".

07:39
13 мая
#
?
написал:

UP, проблема не решена еще?

Написание ответа

Перед публикацией рекомендуется использовать Предпросмотр, чтобы увидеть конечный вид сообщения.


Обратите внимание! Для противодействия спаму новые посты форума проявляются с задержкой от нескольких минут, пока не пройдут модерацию.