Как убрать категорию из левого (sidebar) меню. Opencart 3

Тема в разделе "Общие вопросы", создана пользователем blazerok, 22 дек 2025.

  1. blazerok

    blazerok Новичок

    Сообщения:
    2
    Симпатии:
    0
    Всех приветствую, как скрыть категорию из левого (sidebar) меню в Opencart 3? Решение для 1.5 где можно прописывать -1 в сортировке и оно пропадало, с OC3 не срабатывает.
    Задача стоит именно не отключить, а скрыть определённые категории, чтобы они по прямым ссылкам были доступны. Необходимо для создания посадочных страниц с нужными наборами товаров.
     
  2. devagency

    devagency Пользователь

    Сообщения:
    47
    Симпатии:
    17
    Самое правильно решение дописать для модуля Категории проверку на установленную галочку "Главное меню" например или вообще сделать отдельную галочку только для этого модуля.
    Если сами не справитесь пишите в телеграм @devagency могу сделать на коммерческой основе
     
  3. Ravilr

    Ravilr Специалист

    Сообщения:
    4.190
    Симпатии:
    1.439
    Почему не срабатывает? может просто кеш модификаторов обновить?
     
  4. blazerok

    blazerok Новичок

    Сообщения:
    2
    Симпатии:
    0
    Кстати, не пробовал очищать кэш модификаторов.

    Давайте сверимся, решение собственно такое пробовал:

    --------------------

    только что проверил на ocstore 1551 и brocart - все шикарно работает

    открываем файл catalog/model/catalog/category.php
    и вот эту функцию:


    public function getCategories($parent_id = 0) {
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)");

    return $query->rows;
    }

    заменяем на вот это:


    public function getCategories($parent_id = 0) {
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' AND c.sort_order > '-1' ORDER BY c.sort_order, LCASE(cd.name)");

    return $query->rows;
    }

    ну или просто добавляем в нужном месте AND c.sort_order > '-1'

    идем в админке в категорию которую нужно скрыть и ставим ей статус сортировки -1

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

    ---
    Upd. Ещё раз попробовал, очистил кэш. Не срабатывает.
     
    Последнее редактирование: 22 дек 2025
  5. Ravilr

    Ravilr Специалист

    Сообщения:
    4.190
    Симпатии:
    1.439
    Да работает все как ожидаемо. Значит или модель используется в вашем случаи другая, или фильтр какой то установлен итд итп