Как настроить меню на 1С-Битрикс: типы, пункты, bitrix:menu и проверка на сайте

Раздел "Акции" уже в структуре сайта, а в шапке пункта нет – типичная ошибка и боль контент-менеджера на 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, не портала

Сравнение CMS-меню сайта и меню портала Bitrix24 на коллаж-карточке

Делайте настройку меню в админке "Управление структурой" и в файлах разделов сайта, если у вас витрина на хостинге: корпоратив, лендинг, интернет-магазин на Битрикс. Не ищите инструкцию про "главное меню Bitrix24" – она про облачный портал и к файлам .top.menu.php не относится.

Что настраиваете Где живёт Кому подходит
Шапка / футер / левое меню Тип меню + .тип.menu.php + bitrix:menu Контент-менеджер, вебмастер
Меню каталога из разделов инфоблока .тип.menu_ext.php + menu.sections Магазин с частыми новыми разделами
Мобильное / выпадающее Отдельный тип или шаблон компонента Сайты с отдельной моб. навигацией

Рекомендация: перед любой правкой откройте страницу в режиме правки и наведите на нужное меню – так вы сразу увидите, какой тип реально выводится. Не правьте "наугад" левое меню, если проблема в шапке.

Схема работы меню:
Тип в "Управление структурой" → файл .тип.menu.php (статика) и/или .тип.menu_ext.php (динамика) → IncludeComponent bitrix:menu в шаблоне → проверка на сайте + сброс кэша

Проверьте типы меню в модуле "Управление структурой"

Схема проверки типов меню top/left в модуле Управление структурой

Тип меню – короткий код латиницей (top, left, bottom, footer, mobile). Он становится префиксом файлов: для top система ищет .top.menu.php. Типы задаются так:

  1. Откройте Настройки → Настройки продукта → Настройки модулей → Управление структурой.
  2. Выберите нужный сайт (важно при многосайтовости – см. также настройку многосайтовости).
  3. В списке типов меню найдите top, left, bottom или создайте свой под шаблон (например footer).
  4. Сохраните настройки модуля.
  5. Запомните код типа: именно его потом укажете в ROOT_MENU_TYPE у компонента.

Делайте свой тип, если в шаблоне уже заложен отдельный идентификатор (mobile, catalog). Не путайте тип с "местом на экране": официальная документация прямо говорит, что один и тот же тип можно вывести в любом месте шаблона. Ошибка "добавил в меню, а в шапке пусто" чаще всего = записали не в тот тип.

Добавьте пункты: публичка, .тип.menu.php и динамика menu_ext

Чеклист добавления пунктов меню через публичку, .menu.php и menu_ext

Статическое меню – список ссылок, который вы правите руками. Динамическое подтягивает разделы (часто каталога) автоматически. Смешанное склеивает оба списка.

Самый простой путь для менеджера:

  1. Включите Режим правки на публичной странице.
  2. Наведите курсор на нужное меню и выберите "Редактировать пункты меню".
  3. Добавьте пункт: название, ссылка, при необходимости сортировку.
  4. Если пункта нет в списке типов при создании страницы – вернитесь и выберите тот тип, который читает шапка (часто top, не left).
  5. Сохраните и обновите страницу с полным сбросом кэша браузера (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.

  1. Узнайте ROOT_MENU_TYPE – какой тип читается как корень (часто top).
  2. Проверьте CHILD_MENU_TYPE – тип для вложенных уровней (иногда left или тот же top).
  3. Посмотрите MAX_LEVEL: 1 = только верхний уровень, 2+ = выпадающее / многоуровневое.
  4. Если есть .тип.menu_ext.php – включите USE_EXT = Y; без этого динамика часто ломается «молча».
  5. Сверьте права и условие показа пункта в расширенном режиме.
  6. При отладке временно поставьте тип кеширования меню в "Не кешировать", затем верните кэш после проверки.

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

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

Диагностика "пункт не виден":
Верный тип? → Файл в нужном разделе (не перебит локальным)? → USE_EXT для динамики? → Условие/права? → Кэш сброшен?

Пройдите чек-лист проверки на сайте

После правок не ограничивайтесь одной страницей админки. Пройдите короткий чек-лист – так вы закроете сценарий reader_story "раздел есть, в шапке пусто".

  1. Откройте главную: новый пункт есть в шапке (или в том меню, которое правили).
  2. Откройте раздел каталога: динамические пункты на месте, если используете menu_ext.
  3. Проверьте мобильную вёрстку или отдельный тип mobile – пункт не "потерялся" только на десктопе.
  4. Кликните пункт: URL открывается, нет 404 (карта ошибок – отдельная тема, не смешиваем с меню).
  5. Зайдите под гостем и под менеджером: условие показа и права не прячут пункт зря.
  6. Сбросьте кэш продукта и кэш меню; обновите страницу без кэша браузера.
  7. Если пункт нужен для 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, сбросьте кэш и проверьте дерево разделов в публичке.

Обсудить вашу задачу

Было полезно?

Поставьте лайк, если статья помогла разобраться.

Поделиться статьёй

Отправьте тому, кому это пригодится.

Telegram ↗ MAX ↗ ВКонтакте ↗ Одноклассники ↗
Все статьи ↗

Как настроить регистрацию и личный кабинет покупателя на 1С-Битрикс?

Структура шаблонов сайта в Битриксе и поиск header footer

Как настроить скидки и промокоды на 1С-Битрикс: правила корзины и купоны