Раздел "Акции" уже в структуре сайта, а в шапке пункта нет – типичная ошибка и боль контент-менеджера на 1С-Битрикс: Управление сайтом (это не меню портала Bitrix24). На практике мастер писал в тип left, а шапка читает top, либо в подразделе лежит свой файл меню и перебивает корень. Ниже – цепочка тип → файл .тип.menu.php → компонент bitrix:menu → проверка на сайте, чтобы новый пункт появился там, где его ждут.
Меню на CMS Битрикс – это не "кнопка в интерфейсе", а связка: тип в модуле "Управление структурой", файл пунктов (.top.menu.php и аналоги) и вывод компонентом bitrix:menu в шаблоне. Тип – идентификатор на латинице, а не "место на экране": top можно вывести и в шапке, и в футере, если так задумано в шаблоне. Динамика каталога работает только через .тип.menu_ext.php и параметр USE_EXT. После правок почти всегда нужен сброс кэша меню.
Речь про публичную навигацию сайта или магазина на коробочной CMS: шапка, левое меню, футер, мобильное. Если вам нужно меню разделов CRM-портала – это другой продукт, сюда инструкции не относятся. Готовый вид меню сильно зависит от шаблона сайта на Битрикс: в одном решении шапка читает top, в другом – свой тип вроде header или mobile.
Ниже – маршрут для сценария "раздел создали – в меню пусто": сверяем типы и параметры компонента, правим пункты, при необходимости подключаем динамику каталога и проверяем публичку.
Зафиксируйте scope: меню сайта на CMS, не портала
Делайте настройку меню в админке "Управление структурой" и в файлах разделов сайта, если у вас витрина на хостинге: корпоратив, лендинг, интернет-магазин на Битрикс. Не ищите инструкцию про "главное меню Bitrix24" – она про облачный портал и к файлам .top.menu.php не относится.
| Что настраиваете | Где живёт | Кому подходит |
|---|---|---|
| Шапка / футер / левое меню | Тип меню + .тип.menu.php + bitrix:menu | Контент-менеджер, вебмастер |
| Меню каталога из разделов инфоблока | .тип.menu_ext.php + menu.sections | Магазин с частыми новыми разделами |
| Мобильное / выпадающее | Отдельный тип или шаблон компонента | Сайты с отдельной моб. навигацией |
Рекомендация: перед любой правкой откройте страницу в режиме правки и наведите на нужное меню – так вы сразу увидите, какой тип реально выводится. Не правьте "наугад" левое меню, если проблема в шапке.
Схема работы меню:
Тип в "Управление структурой" → файл .тип.menu.php (статика) и/или .тип.menu_ext.php (динамика) → IncludeComponent bitrix:menu в шаблоне → проверка на сайте + сброс кэша
Проверьте типы меню в модуле "Управление структурой"
Тип меню – короткий код латиницей (top, left, bottom, footer, mobile). Он становится префиксом файлов: для top система ищет .top.menu.php. Типы задаются так:
- Откройте Настройки → Настройки продукта → Настройки модулей → Управление структурой.
- Выберите нужный сайт (важно при многосайтовости – см. также настройку многосайтовости).
- В списке типов меню найдите top, left, bottom или создайте свой под шаблон (например footer).
- Сохраните настройки модуля.
- Запомните код типа: именно его потом укажете в ROOT_MENU_TYPE у компонента.
Делайте свой тип, если в шаблоне уже заложен отдельный идентификатор (mobile, catalog). Не путайте тип с "местом на экране": официальная документация прямо говорит, что один и тот же тип можно вывести в любом месте шаблона. Ошибка "добавил в меню, а в шапке пусто" чаще всего = записали не в тот тип.
Добавьте пункты: публичка, .тип.menu.php и динамика menu_ext
Статическое меню – список ссылок, который вы правите руками. Динамическое подтягивает разделы (часто каталога) автоматически. Смешанное склеивает оба списка.
Самый простой путь для менеджера:
- Включите Режим правки на публичной странице.
- Наведите курсор на нужное меню и выберите "Редактировать пункты меню".
- Добавьте пункт: название, ссылка, при необходимости сортировку.
- Если пункта нет в списке типов при создании страницы – вернитесь и выберите тот тип, который читает шапка (часто top, не left).
- Сохраните и обновите страницу с полным сбросом кэша браузера (hard refresh).
В админке тот же файл можно открыть через Контент → Структура сайта: найдите .top.menu.php (или другой тип) в корне либо в разделе. Внутри – массив $aMenuLinks. У каждого пункта пять частей: название, ссылка, доп. URL для выделения активного пункта, параметры для шаблона, условие показа на PHP (true = всегда показывать). Например, пункт "Акции" ведёт на /actions/, а в доп. URL можно добавить /actions/sale/, чтобы выделение активного пункта не пропадало на внутренней странице.
<?php
$aMenuLinks = Array(
Array(
"Акции",
"/actions/",
Array(),
Array(),
""
),
);
?>
Для каталога, который часто меняется, не копируйте каждый раздел руками. Создайте файл .тип.menu_ext.php рядом со статическим и подключите компонент bitrix:menu.sections (он строит пункты из разделов инфоблока). Без файла _ext или без галочки USE_EXT в bitrix:menu динамика "молча" не появится – это прямо в таблице ошибок официальной документации.
Делайте правку в том разделе, где должен лежать файл меню. Не оставляйте в подразделе "случайный" .top.menu.php: система перестаёт брать корневое меню и наследует локальный файл – отсюда "лишнее" или обрезанное меню на одной ветке сайта.
Настройте вывод: компонент bitrix:menu, уровни и кэш
Компонент bitrix:menu – кусок кода в шаблоне сайта, который рисует меню. Обычно его вызывает разработчик в header.php или в include-области. Вам как менеджеру достаточно знать ключевые параметры, а не обязательно править PHP.
- Узнайте ROOT_MENU_TYPE – какой тип читается как корень (часто top).
- Проверьте CHILD_MENU_TYPE – тип для вложенных уровней (иногда left или тот же top).
- Посмотрите MAX_LEVEL: 1 = только верхний уровень, 2+ = выпадающее / многоуровневое.
- Если есть .тип.menu_ext.php – включите USE_EXT = Y; без этого динамика часто ломается «молча».
- Сверьте права и условие показа пункта в расширенном режиме.
- При отладке временно поставьте тип кеширования меню в "Не кешировать", затем верните кэш после проверки.
Кеш меню в Битрикс завязан на адрес страницы: на большом сайте файлов кэша становится много, и правки "не доезжают" до публички. Форумы разработчиков подтверждают кейсы, когда пункт появляется только после полного сброса. Подробный разбор очистки – в гайде как очистить кэш на Битрикс; здесь достаточно шага "сбросить после правок меню".
Делайте: сверяйте ROOT_MENU_TYPE с файлом, который правите. Не делайте: править только условие показа в расширенном режиме и ждать чуда, если компонент читает другой тип. Права доступа к пункту тоже режут видимость: пункт есть в файле, а гость его не видит.
Диагностика "пункт не виден":
Верный тип? → Файл в нужном разделе (не перебит локальным)? → USE_EXT для динамики? → Условие/права? → Кэш сброшен?
Пройдите чек-лист проверки на сайте
После правок не ограничивайтесь одной страницей админки. Пройдите короткий чек-лист – так вы закроете сценарий reader_story "раздел есть, в шапке пусто".
- Откройте главную: новый пункт есть в шапке (или в том меню, которое правили).
- Откройте раздел каталога: динамические пункты на месте, если используете menu_ext.
- Проверьте мобильную вёрстку или отдельный тип mobile – пункт не "потерялся" только на десктопе.
- Кликните пункт: URL открывается, нет 404 (карта ошибок – отдельная тема, не смешиваем с меню).
- Зайдите под гостем и под менеджером: условие показа и права не прячут пункт зря.
- Сбросьте кэш продукта и кэш меню; обновите страницу без кэша браузера.
- Если пункт нужен для SEO-навигации по разделам – сверьтесь с общей SEO-настройкой сайта на Битрикс, но не подменяйте меню картой сайта sitemap.
Делайте чек-лист обязательным этапом сдачи правок. Не считайте задачу закрытой, пока не проверили мобильное меню и гостевой доступ.
Если шаблон кастомный или меню каталога собирается через доработки – лучше привлечь разработчика, чем ломать файлы "на глаз". Обсудить задачу можно на странице контактов.
Автор: Максим Мольков, разработчик 1С-Битрикс.
Источники: документация BitrixFramework по меню, курс контент-менеджера (COURSE_ID=34), справка компонента bitrix:menu, курс разработчика (COURSE_ID=43).
Частые вопросы
Как добавить пункт меню в Битрикс?
Включите Режим правки → наведите на нужное меню → "Редактировать пункты меню" → добавьте название и ссылку → сохраните → сбросьте кэш. Альтернатива: Контент → Структура сайта → файл .тип.menu.php (часто .top.menu.php).
Где задать тип меню top, left или свой?
Настройки → Настройки продукта → Настройки модулей → Управление структурой → типы меню для выбранного сайта. Код типа должен совпасть с ROOT_MENU_TYPE у bitrix:menu в шаблоне.
Чем статическое меню отличается от menu_ext?
Статика – ручной список в .тип.menu.php. menu_ext (.тип.menu_ext.php) дополняет или строит пункты кодом, чаще через bitrix:menu.sections из разделов инфоблока. Без USE_EXT=Y файл _ext не подключится.
Почему меню не обновилось после правок?
Чаще всего виноват кэш компонента bitrix:menu или кэш продукта. Сбросьте кэш в админке; для проверки временно отключите кеширование меню в параметрах компонента, затем верните его.
Почему пункт есть в файле, но на сайте его не видно?
Проверьте: правите ли тот тип, который читает шаблон; нет ли локального .тип.menu.php в текущем разделе; условие показа и права в расширенном режиме; сброшен ли кэш.
Как сделать меню каталога без ручного добавления каждого раздела?
Создайте .тип.menu_ext.php с вызовом bitrix:menu.sections для нужного инфоблока, в bitrix:menu включите USE_EXT=Y, сбросьте кэш и проверьте дерево разделов в публичке.
Было полезно?
Поставьте лайк, если статья помогла разобраться.
Поделиться статьёй
Отправьте тому, кому это пригодится.
Можно поделиться и фрагментом: выделите текст статьи.