В 1С-Битрикс любое меню — это тип меню плюс шаблон вывода. Многоуровневость (вложенные подпункты) задаётся при редактировании пунктов, а то, как она отобразится в левой, верхней или нижней области, зависит от шаблона компонента bitrix:menu.
.левое.menu.php, .верхнее.menu.php, .нижнее.menu.php (символьный код типа меню задаётся в Настройки → Настройки продукта → Настройки модулей → Управление структурой).Типы меню и области вывода
В 1С-Битрикс на одной странице может выводиться несколько меню одновременно — каждое отвечает за свою область макета. Стандартный набор корпоративных шаблонов включает три типа:
- Верхнее (top) — горизонтальное меню в шапке сайта, обычно верхнеуровневые разделы.
- Левое (left) — вертикальное меню в боковой колонке, чаще всего именно оно делается многоуровневым (раскрывающиеся подпункты раздела).
- Нижнее (bottom) — меню в подвале (footer): служебные ссылки, разделы каталога, контакты.
Каждый тип меню имеет собственный символьный код (например top, left, bottom) и хранится в отдельном файле вида .тип.menu.php внутри раздела. Один компонент bitrix:menu в шаблоне сайта отвечает за одну область и обращается к своему типу меню.
Где настраивается меню в админке
Редактировать пункты меню можно двумя путями — из административной части и напрямую из публичной части.
Через административную часть:
- Перейдите в Контент → Структура сайта → Файлы и папки.
- Откройте нужный раздел (папку) сайта.
- В контекстном меню файла меню (например
.left.menu.php) выберите Изменить меню.
Через публичную часть (при включённом режиме правки): наведите на область меню, нажмите значок редактирования и выберите пункт вида «Изменить меню «Левое меню»». Откроется визуальный редактор пунктов.
Символьные коды типов меню и их названия задаются в Настройки → Настройки продукта → Настройки модулей → Управление структурой, блок Типы меню (отдельно для каждого сайта).
Как создать многоуровневые (вложенные) пункты
Многоуровневость в 1С-Битрикс задаётся уровнем вложенности каждого пункта прямо в редакторе меню — отдельных «подменю» как сущностей не существует, есть один линейный список пунктов с указанием их уровня.
- Откройте нужное меню на редактирование.
- Добавьте пункт кнопкой Добавить пункт меню: укажите Название и Ссылку.
- Для подпункта увеличьте уровень вложенности (в редакторе — стрелки «вправо/влево» или поле уровня). Пункт уровня 2 становится дочерним по отношению к ближайшему пункту уровня 1 выше по списку.
- Сохраните меню.
В файле .left.menu.php вложенность хранится в дополнительном параметре пункта. Чтобы подпункты реально раскрывались, шаблон меню должен поддерживать многоуровневость (см. раздел о шаблонах ниже).
Ссылку удобно указывать относительной — например /catalog/services/. Пункт считается активным, когда текущий URL совпадает со ссылкой пункта или входит в его раздел.
Шаблон компонента bitrix:menu и глубина
За вывод меню в шаблоне сайта отвечает компонент bitrix:menu. Именно его параметры определяют, сколько уровней покажется и как.
- Тип меню (
ROOT_MENU_TYPE) — какой файл меню читать (left,top,bottom). - Уровень вложенности (
MAX_LEVEL) — сколько уровней выводить:1— только верхний,2и более — с подпунктами. - Шаблон меню — визуальное оформление. Для раскрывающихся списков используют многоуровневые шаблоны (например
vertical_multilevelдля левого,horizontal_multilevelдля верхнего). - Использовать вложенные меню (
USE_EXT) — включает подключение файлов.тип.menu_ext.phpдля динамического формирования подпунктов (например из инфоблока каталога).
Если многоуровневые пункты созданы, но подпункты не видны, почти всегда причина в том, что MAX_LEVEL = 1 либо выбран одноуровневый шаблон меню.
Наследование меню между разделами
Меню в 1С-Битрикс наследуется по структуре папок. Если в подразделе нет собственного файла меню данного типа, система поднимается вверх по дереву и берёт меню родительского раздела.
| Область | Типовой символьный код | Где обычно свой файл |
|---|---|---|
| Верхнее | top | Только в корне сайта (общее для всех) |
| Левое | left | В корне и в крупных разделах (своё для каталога, услуг и т.д.) |
| Нижнее | bottom | Обычно только в корне |
Практический вывод: верхнее и нижнее меню держат едиными в корне /, а левое создают отдельно в тех разделах, где нужна своя навигация. Чтобы в разделе показать своё левое меню, создайте в его папке файл .left.menu.php — он перекроет родительский.
Частые ошибки
- Подпункты не раскрываются. В параметрах компонента стоит
MAX_LEVEL = 1или выбран одноуровневый шаблон меню. ПоставьтеMAX_LEVEL = 2(и более) и многоуровневый шаблон. - Меню раздела не отличается от корневого. В подразделе нет собственного файла
.тип.menu.php— выводится унаследованное. Создайте меню прямо в нужной папке. - Пункт не подсвечивается активным. Ссылка указана с доменом или с лишним
index.php. Используйте относительные ЧПУ-ссылки вида/catalog/. - Неверный символьный код типа. В компоненте указан тип меню, которого нет в настройках модуля «Управление структурой» — меню просто пустое. Сверьте код в Настройки → Настройки продукта → Настройки модулей → Управление структурой.
- Правки не видны на сайте. Включено кеширование компонента меню. Сбросьте кеш: Настройки → Настройки продукта → Автокеширование или очистка кеша страницы.
- Дублируются пункты в подвале. Нижнее меню создано и в корне, и в разделе — раздел перекрывает корневое. Оставьте один файл там, где нужно.
Итог
Многоуровневое меню в 1С-Битрикс складывается из трёх составляющих: тип меню (файл .тип.menu.php в разделе), вложенность пунктов (уровни в редакторе меню) и шаблон вывода компонента bitrix:menu с параметром MAX_LEVEL.
Верхнее и нижнее меню обычно единые и задаются в корне сайта, левое — многоуровневое и часто своё для каждого крупного раздела за счёт наследования по структуре папок. Если подпункты не отображаются, начинайте проверку с MAX_LEVEL и выбранного шаблона меню.