#Признаки проблемы и применимость
После обновления шаблона Битрикс исчезло верхнее или боковое меню, хотя страницы по прямым адресам открываются. Возможны замена включаемой области шаблона, повреждение меню типа .top.menu.php, изменение расположения компонента или кеш старой разметки.
#Причины и отличительные признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Обновлённый шаблон больше не подключает менюОбновлённый шаблон больше не подключает меню. В исходном HTML нет блока меню, но данные существуют | В исходном HTML нет блока меню, но данные существуют | Проверить файл шаблона и подключение компонента |
| Файл меню перемещён или переименованФайл меню перемещён или переименован. В каталоге нет прежнего .top.menu.php | В каталоге нет прежнего .top.menu.php | Восстановить согласованный файл из копии |
| Кеш или права доступаКеш или права доступа. Меню видно админу, но не гостю | Меню видно админу, но не гостю | Проверить кеш и права элементов меню |
#Пошаговая диагностика и исправление
- Уточните область отсутствияОткройте главную, внутреннюю страницу и меню под гостем и администратором. Если исчезли только ссылки для гостя, обратите внимание на права. Если меню не отображается нигде, исследуйте шаблон. Сделайте снимки старого и нового вида, если он доступен в резервной копии.
- Сохраните текущую тему и данные менюЧерез файловый менеджер создайте закрытую копию папки активного шаблона и файлов меню. Для Битрикс меню часто лежат в файлах вида .top.menu.php, .left.menu.php; конкретное имя зависит от типа, заданного компонентом. Не заменяйте весь шаблон рабочим архивом без теста.
- Проверьте наличие включения компонентаВ файловом менеджере или редакторе кода на тестовой копии найдите в шаблоне вызов bitrix:menu и параметр ROOT_MENU_TYPE. Сравните с прежней версией: возможно, новая тема использует другой тип или вообще другую область вывода. Не исправляйте PHP наугад.
- Сопоставьте источник данных менюПри наличии редактора структуры сайта откройте соответствующий раздел меню и посмотрите его пункты. Если используется файл .top.menu.php, убедитесь, что файл существует в нужном каталоге и синтаксически корректен; динамические пункты могут формироваться через .menu_ext.php.
- Проверьте фильтрацию пунктов по правамСравните страницу гостя и администратора. Если один видит ссылки, а другой нет, проверьте доступ к разделам и правила компонента меню. Не назначайте посетителям права администратора; для закрытых страниц отсутствие ссылки может быть ожидаемым.
- Исправьте шаблон только на тестовом окруженииВосстановите из резервной копии вызов меню и используемый файл, сохранив изменения обновлённого шаблона. Проверьте синтаксис PHP командой для конкретного файла через SSH, если доступно и установлен соответствующий PHP.
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаКоманда проверяет только синтаксис указанного PHP-файла; версия CLI может отличаться от веб-обработчика.
php -l /путь/к/копии/template.php
- Проверьте результат после очистки кеша страницыВ тестовом окружении сбросьте кеш меню/страницы штатным механизмом и откройте 5 пунктов, включая вложенные. Убедитесь, что ссылки ведут на правильные разделы и не показывают закрытый контент. После переноса на рабочий сайт при регрессии верните сохранённые файлы.
#Проверка результата
Оба вида меню присутствуют на нужных страницах, активные пункты правильные, вложенность и ограничения доступа сохранились после перезагрузки.
#Что делать, если не помогло
Если меню есть в HTML, но невидимо, исследуйте CSS и JavaScript новой темы; если нет в HTML — параметры компонента, шаблон и исходные файлы меню.