Меню и хлебные крошки на практике - вывод и правка
Меню и хлебные крошки - подтема на 31 вопрос из собранных. Здесь собраны решения по выводу и правке навигации.
Что общего у этих задач
Меню читает пункты из файлов разделов. В каждом разделе лежит свой файл меню, и компонент собирает его по типу меню и уровню вложенности. Отсюда первое следствие: «добавить пункт» - это правка файла меню в нужном разделе, а не настройка компонента.
Пункты можно отдавать кодом. Файл меню - обычный массив, и его содержимое собирается любым способом: из инфоблока, из настроек, из внешнего источника. Поэтому многоуровневое меню без создания страниц - штатная задача, а не обход ограничений.
Хлебные крошки собирает не компонент, а платформа. Цепочку наполняют заголовки разделов и вызовы из кода страниц, а компонент только рисует готовый список. Поэтому неверная крошка почти всегда правится в источнике, а не в шаблоне.
Меню каталога дороже, чем кажется. Дерево из сотни разделов со счётчиками товаров собирается на каждом запросе, и без кэша это заметно в замерах скорости витрины.
С чего начать
Начинают с вопроса, откуда берутся пункты: из файлов разделов, из инфоблока или из внешнего источника. Ответ определяет и способ вывода, и место, где меню будут править.
Дальше проверяют тип меню и глубину вывода в параметрах компонента. «Пункты не появляются» почти всегда объясняется несовпадением типа меню, а не ошибкой платформы.
Последним настраивают кэш и его сброс. Меню обязано обновляться после правки структуры разделов, но не собираться заново на каждом заходе посетителя.
Решения подтемы
- Многоуровневое меню: свои пункты и вывод из инфоблока - файлы меню, уровни, пункты из данных, оформление активного.
- Хлебные крошки: правка цепочки и свои элементы - откуда берутся крошки, как добавить свою и убрать лишнюю.
- Меню показывает не то: разбор причин - файл в подразделе, пустой файл, тип меню, кэш.
- Кэш меню: разрастание каталога, тяжёлые запросы, настройка - почему растёт каталог кэша, число файлов, вынос запросов.
- Меню изнутри: файлы, типы, сборка пунктов, кэш - файлы типов меню, наследование по разделам, состав кэша, шаблон.
Частые вопросы
Где лежат пункты меню?
В файле меню внутри раздела: у каждого типа меню свой файл. Компонент собирает пункты из файла текущего раздела и родительских, а не из общей настройки сайта.
Можно ли построить меню из инфоблока?
Да, файл меню возвращает обычный массив, и его наполняют выборкой. Так делают меню каталога, чтобы разделы не приходилось дублировать вручную.
Почему в хлебных крошках лишний раздел?
В цепочку попадает заголовок каждого раздела на пути. Раздел, который не должен показываться, убирают из цепочки в свойствах самого раздела.
Как вывести название товара в хлебных крошках?
Компонент каталога добавляет его сам, когда включён соответствующий параметр. В своём коде название дописывают в цепочку навигации до вывода компонента.
Связанные темы
- Меню и навигация - устройство меню целиком
- Компоненты 2.0 - параметры и шаблоны компонентов
- Шаблоны сайта - куда встраивается навигация
- Раздел Компоненты и шаблоны