Вывести товары в родительскую категорию.

Тема в разделе "Общие вопросы", создана пользователем marand, 24 июл 2015.

  1. vadim165

    vadim165 Новичок

    Сообщения:
    9
    Симпатии:
    1
    Только вы перепутали добавить и заменить :) При таком варианте никакого деления по категориям не будет вообще.
     
    Andrew1812 нравится это.
  2. andriy_kill

    andriy_kill Новичок

    Сообщения:
    3
    Симпатии:
    3
    Не советую так делать. Хоть оно и решает проблему, но после такой правки все странички категорий грузятся на 2 секунды дольше! При том что количество товаров одинаково (у меня в товарах проставлен показ и в родительской категории).
     
  3. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.570
    Симпатии:
    437
    Реализуйте кэш или используйте готовый модуль и проблема решена.
     
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    4.190
    Симпатии:
    1.439
    Начиная с 3.0.3.9 есть проверка на привязанность товара к категории. Поэтому чтобы товары открывались, нужно еще в
    /catalog/controller/product/product.php удалить
    PHP:
            //check product page open from cateory page
            
    if (isset($this->request->get['path'])) {
                
    $parts explode('_', (string)$this->request->get['path']);
                          
                if(empty(
    $this->model_catalog_product->checkProductCategory($product_id$parts))) {
                    
    $product_info = array();
                }
            }
     
    Tom нравится это.
  5. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    876
    Симпатии:
    241
    Тоже хотел вывести все товары подкатегорий - глянул код. В версии 4 filter_sub_category уже попросту отсуствует в модели запроса к базе. Глянул базу - таблица category_path. Не знаю как было сделано раньше, но по идее можно через эту таблицу получать товары подкатегорий

    Код:
    if (isset($data['filter_category_id']) && $data['filter_category_id'] !== '') {                                                                                                                                                                                         
        if (isset($data['filter_sub_category']) && $data['filter_sub_category'] === true) {                                                                                                                                                                                                 
            $sql .= " AND `p`.`product_id` IN (SELECT `p2c`.`product_id` FROM `" . DB_PREFIX . "product_to_category` `p2c` WHERE `p2c`.`category_id` IN (SELECT `cp`.`category_id` FROM `" . DB_PREFIX . "category_path` `cp` WHERE `cp`.`path_id` = '" . (int)$data['filter_category_id'] . "'))";
        } else {                                                                                                                                                                                                                                                                           
            $sql .= " AND `p`.`product_id` IN (SELECT `p2c`.`product_id` FROM `" . DB_PREFIX . "product_to_category` `p2c` WHERE `p2c`.`category_id` = '" . (int)$data['filter_category_id'] . "')";                                                                                       
        }                                                                                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                              

    Неужели такой подзапрос так сильно нагружает систему? В смысле - почему убрали?
     
    Последнее редактирование: 11 янв 2026
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    4.190
    Симпатии:
    1.439
    Может не сильно, но просто в очередной оптимизации, например за ненадобностью.