Перейти к содержимому

Меню и хлебные крошки на практике - вывод и правка

Меню и хлебные крошки - подтема на 31 вопрос из собранных. Здесь собраны решения по выводу и правке навигации.

Что общего у этих задач

Меню читает пункты из файлов разделов. В каждом разделе лежит свой файл меню, и компонент собирает его по типу меню и уровню вложенности. Отсюда первое следствие: «добавить пункт» - это правка файла меню в нужном разделе, а не настройка компонента.

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

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

Меню каталога дороже, чем кажется. Дерево из сотни разделов со счётчиками товаров собирается на каждом запросе, и без кэша это заметно в замерах скорости витрины.

С чего начать

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

Дальше проверяют тип меню и глубину вывода в параметрах компонента. «Пункты не появляются» почти всегда объясняется несовпадением типа меню, а не ошибкой платформы.

Последним настраивают кэш и его сброс. Меню обязано обновляться после правки структуры разделов, но не собираться заново на каждом заходе посетителя.

Решения подтемы

Частые вопросы

Где лежат пункты меню?

В файле меню внутри раздела: у каждого типа меню свой файл. Компонент собирает пункты из файла текущего раздела и родительских, а не из общей настройки сайта.

Можно ли построить меню из инфоблока?

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

Почему в хлебных крошках лишний раздел?

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

Как вывести название товара в хлебных крошках?

Компонент каталога добавляет его сам, когда включён соответствующий параметр. В своём коде название дописывают в цепочку навигации до вывода компонента.

Связанные темы

Первоисточники