Вывод фильтра в некоторых разделах

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 18.

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

Пример рассмотрен на шаблоне Demomarket.

1) Создаем поле для фильтра:

  • Переходим в модуль "Шаблоны данных"
  • Открываем редактирование "Раздела каталога"
  • Добавляем группу кастомных полей и в ней поле "Скрыть фильтр" с идентификатором "hide_filter", отмечаем его как видимое поле

Castom pole.png

2) Добавляем условие в шаблон:

  • Открываем файл шаблона разделов /templates/demomarket/php/catalog/category/leaf_category.phtml (файл, в котором вызывается шаблон фильтра):
  • Добавляем в начало файла код:
$hierarchy = umiHierarchy::getInstance();
//Получаем id текущей страницы
$page = $hierarchy->getElement($variables['page']->{'id'});
//Получаем значение нашего поля
$hide_filter = $page->getValue('hide_filter');
  • Заменяем код в строке:
<?= $this->render($variables, 'catalog/category/filters/index') ?>
  • На следующий код:
<?php if ($hide_filter == null) echo $this->render($variables, 'catalog/category/filters/index'); ?>
  • Теперь мы можем перейти в режим редактирования любого раздела каталога и отметить галочкой поле "Скрыть фильтр". В этом случае результат проверки ($hide_filter == null) вернет ответ false и фильтр не будет отображен.

Hide filter1.png



Примеры:

  • Фильтр не скрыт

Hide filter.png

  • Фильтр скрыт

Hide filter2.png