Вывод фильтра в некоторых разделах
Материал из Umicms
Актуально для версии 18.
Очень часто разделы каталога содержат малое количество товаров, которые помещаются на одной странице. По этой и другим причинам можно скрыть фильтр в определенных разделах, чтобы он не занимал лишнее место. Но вместо того, чтобы удалять из общих шаблонов фильтр, мы добавим возможность удобно скрывать его в определенных разделах.
Пример рассмотрен на шаблоне Demomarket.
1) Создаем поле для фильтра:
- Переходим в модуль "Шаблоны данных"
- Открываем редактирование "Раздела каталога"
- Добавляем группу кастомных полей и в ней поле "Скрыть фильтр" с идентификатором "hide_filter", отмечаем его как видимое поле
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 и фильтр не будет отображен.
Примеры:
- Фильтр не скрыт
- Фильтр скрыт