@SergPro

Битрикс: как скрыть пункты меню с пустыми разделами?

Компонент bitrix:menu. Нужно отображать в меню только те разделы, в которых есть элементы (а еще лучше активные элементы). Как я понял, никаких галочек и простых решений не существует. Погуглил, вот что предлагают:

1. Использовать init.php
2. В копии шаблона компонента "menu" через getlist узнать количество
3. Скопировать компонент полностью и добавить в массив свойство ELEMENT_CNT

Какое решение лучше? Есть еще способы? Проще ли из catalog.section.list сделать фиксированное меню?
  • Вопрос задан
  • 2251 просмотр
Решения вопроса 1
@lexnekr
init.php - плохая идея. Туда надо ставить только совершенно необходимые обработчики, которые будут на каждом хите работать.

getlist в шаблоне - тоже плохо. Как с кешированием быть? Да и логика должна быть разделена. Как максимум все химикалии должны быть в result_modifier.php или component_epilog.php. А лучше в component.php.

А вот написать свой компонент - это нормально, да.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Напишите скрипт, который будет проходиться по всем разделам и деактивировать пустые разделы. В случае, если в деактивированном разделе появились элементы, то активировать обратно. Запускайте скрипт по крону.
Ответ написан
Комментировать
alexyarik
@alexyarik
Битрикс разработчик
Лучше меню каталога сделать на catalog.section.list
В самом шаблоне делаете проверку, если количество элементов = 0 тогда скрываете пункт
style="display:none;"<?else:?><?endif;?>>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы