Разработка и Конфигурация · 8 мин
Как изменить меню в 1С-Битрикс
Как изменить меню в 1С-Битрикс: редактирование файлов .menu.php, типы меню, компонент bitrix:menu, шаблоны, права доступа и типичные ошибки.
Меню в 1С-Битрикс устроено иначе, чем в большинстве CMS: оно собирается из текстовых файлов .menu.php (и .menu_ext.php), лежащих в папках сайта, и выводится компонентом bitrix:menu. Поэтому «изменить меню» может означать три разные задачи: поменять пункты, изменить внешний вид или перестроить логику формирования. Подход к каждой задаче свой.
Простейший случай — добавить, переименовать или удалить пункт — решается прямо из публичной части сайта в режиме правки, без правок кода. Более сложные сценарии (выпадающие подменю из инфоблоков, многоуровневые меню, кастомный шаблон) требуют работы с файлами и параметрами компонента.
Перед любыми изменениями убедитесь, что у вас есть доступ к административной части и файловой структуре сайта, а также актуальная резервная копия. Ошибка в файле меню или шаблоне может «уронить» навигацию на всём сайте или в отдельном разделе.
Как устроено меню в Битриксе
В каждом разделе сайта могут лежать файлы вида .<тип>.menu.php, например .top.menu.php или .left.menu.php. Тип меню (top, left и т.д.) — это произвольное имя, которое связывает файл с конкретным вызовом компонента в шаблоне сайта. Внутри файла — обычный PHP-массив $aMenuLinks, где каждый пункт описывается названием, ссылкой, массивом дополнительных ссылок и параметрами.
Компонент bitrix:menu читает эти файлы, начиная с текущего раздела и поднимаясь вверх по иерархии (это управляется параметром ROOT_MENU_TYPE и уровнем вложенности MAX_LEVEL). Поэтому один и тот же пункт может редактироваться в разных местах в зависимости от того, к какому разделу он привязан.
Редактирование пунктов через режим правки
Самый безопасный способ — визуальный. Войдите на сайт под администратором, включите режим правки в панели управления и наведите курсор на область меню. Появится панель компонента с кнопкой «Изменить меню» или «Редактировать пункты меню».
В открывшемся окне можно добавить новый пункт (название и ссылка), изменить существующие, поменять порядок сортировки и удалить лишние. После сохранения Битрикс сам перезапишет соответствующий файл .menu.php. Этот способ исключает синтаксические ошибки в PHP и подходит контент-менеджерам без доступа к файлам.
- 1Войдите на сайт под учётной записью администратора и включите режим правки
- 2Наведите курсор на область меню и нажмите иконку редактирования пунктов
- 3Добавьте, переименуйте или удалите пункты, задайте ссылки
- 4Сохраните изменения и проверьте меню в обычном режиме и на вложенных страницах
Редактирование файлов .menu.php вручную
Если нужен тонкий контроль — условия вывода, дополнительные параметры пунктов — файл редактируют напрямую. Откройте его через «Контент → Структура сайта → Файлы и папки» в админке или по FTP/SSH. Структура пункта выглядит так:
$aMenuLinks = Array(
Array(
"Каталог",
"/catalog/",
Array(),
Array(),
""
),
);
Четвёртый элемент массива — произвольные параметры (например, CSS-класс пункта), пятый — PHP-условие показа. Будьте внимательны с кавычками и запятыми: синтаксическая ошибка в этом файле приведёт к тому, что меню перестанет выводиться вовсе или страница покажет ошибку PHP.
Динамические подменю через .menu_ext.php
Когда пункты должны формироваться автоматически — например, подменю из разделов инфоблока каталога — используется файл .<тип>.menu_ext.php рядом с обычным файлом меню. В нём пишут PHP-код, который дополняет массив $aMenuLinks, чаще всего с помощью компонента bitrix:menu.sections.
Такой подход требует, чтобы в параметрах компонента меню был включён режим расширенной обработки (параметр USE_EXT = Y). Если файл создан, а пункты не появляются — первым делом проверьте именно этот параметр в настройках компонента в шаблоне сайта.
Изменение внешнего вида: шаблон компонента
За HTML и классы меню отвечает шаблон компонента bitrix:menu. Чтобы не потерять изменения при обновлении, шаблон копируют в папку шаблона сайта: /local/templates/ваш_шаблон/components/bitrix/menu/имя_шаблона/ и правят там файл template.php и стили.
Никогда не редактируйте шаблоны в папке /bitrix/components/ — обновление ядра перезапишет ваши правки. После изменения шаблона сбросьте кеш (в админке: «Настройки → Производительность» или кнопка сброса кеша в панели), иначе старый HTML продолжит выводиться.
Частые ошибки и проверка результата
После любых изменений проверьте меню в трёх состояниях: на главной странице, в разделе второго уровня и в браузере без авторизации (или в режиме инкогнито). Права доступа тоже влияют на видимость: пункт на закрытый раздел для неавторизованного пользователя может не отображаться — это нормальное поведение, а не поломка.
Как проверить результат
Виден на всех страницах, где выводится данный тип меню, ссылка ведёт на нужный раздел
Пункт виден только в одном разделе или ведёт на 404
Разделы каталога подтягиваются автоматически, новые разделы появляются после сброса кеша
Подменю пустое при заполненном инфоблоке — проверьте USE_EXT и тип меню
Меню одинаково выглядит в режиме правки и в инкогнито
В инкогнито старая версия — кеш не сброшен или включён композитный режим
FAQ
Добавил пункт в меню, но он не появился на сайте. Что делать?
Чаще всего виноват кеш: сбросьте его через панель управления или раздел «Производительность». Если не помогло — проверьте, тот ли тип меню вы редактировали (top/left), и нет ли в пункте условия, скрывающего его для вашей группы пользователей.
Как изменить порядок пунктов меню?
В режиме правки порядок меняется перетаскиванием или стрелками в окне редактирования. При ручной правке файла .menu.php порядок пунктов определяется порядком элементов в массиве $aMenuLinks — просто переместите нужный блок выше или ниже.
Можно ли сделать разные меню для разных разделов сайта?
Да. Положите файл .<тип>.menu.php с нужными пунктами в папку конкретного раздела — компонент при настройках по умолчанию подхватит меню ближайшего уровня. Дополнительно можно вызывать компонент с разными параметрами ROOT_MENU_TYPE в разных шаблонах или разделах.
Как скрыть пункт меню от неавторизованных пользователей?
Проще всего ограничить доступ к самому разделу в настройках прав — Битрикс автоматически скроет ссылку на недоступный раздел. Альтернатива — PHP-условие в пятом элементе массива пункта, например проверка $USER->IsAuthorized().
Меню сломалось после правки файла — выводится ошибка PHP. Как откатить?
Откройте файл .menu.php через админку или FTP и восстановите сохранённую копию. Если копии нет, проверьте синтаксис массива: каждая строка пункта должна заканчиваться запятой, кавычки — закрываться, скобки массивов — парно. После исправления сбросьте кеш.
Чем отличается .menu.php от .menu_ext.php?
Первый файл содержит статичный список пунктов и редактируется вручную или визуально. Второй — PHP-скрипт, который программно дополняет меню, например пунктами из инфоблока. Они работают вместе: сначала читается статический файл, затем выполняется расширяющий.
Что важно запомнить
Пункты меню меняются через режим правки или файлы .menu.php в папках разделов, внешний вид — через скопированный шаблон компонента bitrix:menu, динамические подменю — через .menu_ext.php при включённом USE_EXT. После любых правок сбрасывайте кеш и проверяйте меню в режиме инкогнито.