Автор Тема: Модуль blocklayered не выводить для определённой категории товаров?  (Прочитано 36 раз)

16 Май 2018, 14:10:09
  • Старожил
  • ****
  • Сообщений: 384
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
День добрый!

Имеем модуль blocklayered.

Как его не выводить для определённой категории товаров?

Например имеем категорию 'Товар женский' и у него подкатегория 'Сумки'.

Необходимо для категории 'Товар женский' запретить вывод модуля blocklayered.
Соответственно в подкатегории 'Сумки' всё должно отображаться.

Проблема в том, что в корневой категории очень много товаров, что приводит к тормозам.
Хочу сделать заглушку, например какое нибудь изображение вывести для категории 'Товар женский', но не товары с blocklayered для этой категории.

Заранее спасибо!
16 Май 2018, 15:29:38
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22548
  • Репутация: +17130/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В модуле можно создать шаблон и исключить категории для показа.
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
16 Май 2018, 15:43:32
Ответ #2
  • Старожил
  • ****
  • Сообщений: 384
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В модуле можно создать шаблон и исключить категории для показа.

Спасибо за ответ.

Сделал как Вы советовали.
Теперь фильтры слева отсутствуют.
Однако весть товар из категории отображается.
Как запретить отображение товара?
16 Май 2018, 15:53:02
Ответ #3
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22548
  • Репутация: +17130/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Чтобы не показывать товары на странице категорий, нужно добавить поле для категории показывать/не показывать, переопределить контроллер категории или создать модуль для задания исключенний.
Можно добавить условие в шаблон страницы и указать id категории
{if $category->id AND $category->active AND $category->id != ...}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
16 Май 2018, 16:03:21
Ответ #4
  • Старожил
  • ****
  • Сообщений: 384
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы не показывать товары на странице категорий, нужно добавить поле для категории показывать/не показывать, переопределить контроллер категории или создать модуль для задания исключенний.
Можно добавить условие в шаблон страницы и указать id категории
{if $category->id AND $category->active AND $category->id != ...}

Если добавить условие в шаблон, то производительность не улучшится. Т.к. контроллер всё равно будет тратить время на выбор товаров.

Лучшим вариантом будет переопределить контроллер категорий => CategoryController.php

У меня всего две категории для которых надо запретить отображение, $id_category = 111 и $id_category = 112.

Отредактировал вот так:

public function initContent()
    {
        parent::initContent();


$id_category = (int)Tools::getValue('id_category');
if ($id_category == 111 || $id_category == 112)
                {
                     $this->setTemplate(_PS_THEME_DIR_.'man-home.tpl');
     return;
                }

        $this->setTemplate(_PS_THEME_DIR_.'category.tpl');

.....

Возможно есть более хороший вариант?
16 Май 2018, 17:02:57
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 14861
  • Репутация: +14588/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Если добавить условие в шаблон, то производительность не улучшится. Т.к. контроллер всё равно будет тратить время на выбор товаров.
Запрос требует меньше сек. и они кешируемые.
Наоборот, добавление условий исключения потребует больше времени.
Самое много времени приходится на вывод товаров в шаблоне, а не на запрос к бд.
Если у вас наоборот, то оптимизировать нужно бд.