Меню в Drupal: частые ошибки новичков и быстрый фикс
В Drupal меню может быть создано правильно, но не появиться на сайте: ссылка попала не в тот блок, путь закрыт правами, а кэш показывает старую версию. Разбираем настройку на Drupal 10 и 11 и ошибки, из-за которых навигация ломается.

За 20–40 минут вы сможете создать меню в Drupal 10 или 11, добавить в него страницы, выстроить вложенность и вывести навигацию в нужной области темы. Главная ловушка новичка в том, что меню и его отображение — разные настройки: ссылка может существовать в административном разделе, но не быть назначенной ни одному блоку на сайте.
Что проверить до начала
Перед настройкой вам понадобятся:
- сайт на Drupal 10 или Drupal 11 с доступом к административной части;
- учётная запись с правами на управление меню и блоками;
- хотя бы одна опубликованная страница, которую нужно добавить в навигацию;
- понимание, в какой регион темы должно попасть меню: например, Header, Primary menu или Sidebar.
Названия пунктов могут немного отличаться в русской и английской локализации. В этой инструкции используются стандартные пути Drupal: /admin/structure/menu для меню и /admin/structure/block для блоков.
Пошаговая настройка меню
- Откройте список меню. В административной панели перейдите в Structure → Menus. В Drupal обычно уже есть меню Main navigation, User account menu и несколько служебных вариантов. Для основной навигации сайта чаще всего подходит Main navigation. Не создавайте новое меню, если вам нужно просто добавить ещё один пункт в уже используемую шапку.
Проверка: на странице отображается список меню, а рядом с Main navigation есть действие Edit menu или Manage links.
- Создайте отдельное меню только при понятной причине. Если навигация нужна для конкретного раздела, нажмите Add menu, задайте машинное имя и сохраните меню. В описании можно указать назначение: например, «Ссылки для раздела Документация». Машинное имя не показывается посетителям, но помогает отличать меню в настройках блоков.
Проверка: новое меню появилось в общем списке и открывается без сообщения об ошибке доступа.
- Добавьте ссылку на страницу. Откройте нужное меню и нажмите Add link. В поле Menu link title укажите текст, который увидит посетитель. В поле Link используйте внутренний путь страницы, например
/aboutили/catalog. Для страницы материала лучше выбрать существующий контент через автодополнение, если такая возможность доступна в вашей форме: так меньше риск ошибиться в адресе.Не вставляйте полный адрес сайта во внутреннюю ссылку без необходимости. Перенос сайта на другой домен или в подкаталог может сделать такие ссылки неудобными для сопровождения.
Проверка: после сохранения ссылка появилась в списке меню, а переход по ней открывает нужную страницу.
- Проверьте публикацию и адрес страницы. Если ссылка ведёт на материал, убедитесь, что материал опубликован. Откройте его в отдельной вкладке и скопируйте фактический путь из адресной строки. В Drupal путь страницы и её заголовок — не одно и то же: страница может называться «О компании», но иметь адрес
/about-us.Проверка: пользователь без административных прав открывает адрес страницы и не получает Access denied или Page not found.
- Настройте вложенность. В списке ссылок перетащите дочерний пункт под родительский и немного вправо. Например, «Доставка» и «Оплата» можно разместить внутри раздела «Покупателям». Не делайте больше двух-трёх уровней без необходимости: на мобильном экране глубокое дерево превращается в неудобный список.
Если перетаскивание недоступно, проверьте колонку веса или используйте кнопки изменения порядка. После перемещения обязательно сохраните список ссылок: одного визуального изменения позиции недостаточно.
Проверка: после обновления страницы дочерний пункт остаётся под родительским и отображается с отступом или внутри раскрывающегося раздела.
- Выведите меню через блок. Перейдите в Structure → Block layout. Выберите тему, которая включена для посетителей, найдите нужный регион и нажмите Place block. В списке блоков выберите блок меню, затем укажите созданное меню. Если Main navigation уже размещён в шапке, не добавляйте вторую копию рядом: сначала найдите существующий блок и отредактируйте его.
В настройках блока могут быть ограничения по страницам, ролям и типам содержимого. На первом запуске оставьте их пустыми, чтобы исключить лишнюю причину исчезновения навигации.
Проверка: после сохранения блока меню видно в нужном регионе на странице сайта, а не только в административной теме.
- Проверьте права доступа. Откройте сайт в приватном окне браузера или выйдите из учётной записи администратора. Администратор часто видит больше пунктов, чем обычный посетитель, поэтому проверка только под своей учётной записью даёт ложное ощущение, что всё работает.
Ссылка на материал может быть в меню, но Drupal скроет её, если текущей роли запрещено просматривать страницу. Это не ошибка меню: сначала нужно проверить разрешения самого материала и его типа.
Проверка: меню одинаково предсказуемо ведёт себя для администратора и тестовой роли посетителя, а закрытые разделы не раскрывают лишние ссылки.
- Очистите кэш после изменений. В Drupal откройте Configuration → Development → Performance и нажмите Clear all caches. Кэш может сохранять старую структуру меню или старое расположение блока. На рабочем сайте не очищайте кэш после каждого клика без причины: операция может временно увеличить нагрузку и убрать заранее прогретые данные.
Проверка: в новом окне браузера отображается последняя версия меню, включая порядок, названия и вложенность ссылок.
Если ссылка есть в разделе Menus, но её нет на сайте, проверяйте не саму ссылку, а цепочку из трёх настроек: меню, блок и доступ.
Частые ошибки новичков
Меню создано, но посетитель его не видит
Создание меню не размещает его автоматически на странице. Меню — это набор ссылок, а блок — способ показать этот набор в регионе темы. Откройте Block layout, найдите блок нужного меню и проверьте, что он размещён именно в активной теме. В Drupal можно настроить блоки для разных тем отдельно, поэтому изменение административной темы не всегда меняет сайт для посетителей.
Добавили ссылку, но получили Page not found
Сообщение Page not found означает, что Drupal не нашёл страницу по указанному пути. Проверьте слеши, регистр символов и актуальный URL материала. Если страницу недавно переименовали или изменили её алиас, старый путь может больше не работать. Исправьте поле Link в пункте меню и снова проверьте переход в приватном окне.
Ссылка есть для администратора, но исчезает для гостя
Сообщение Access denied или отсутствие пункта только у гостя обычно связано с правами доступа. Администратор может открывать страницы, закрытые для роли Anonymous user. Проверьте публикацию материала, разрешения роли и ограничения самого блока. Не выдавайте гостям административные права ради одной ссылки.
После перетаскивания порядок не изменился
В Drupal порядок ссылок хранится только после сохранения формы управления меню. Если вы ушли со страницы или нажали другую кнопку до сохранения, изменения пропадут. При сложной структуре сначала сохраните порядок, затем отдельно настройте блок и очистите кэш.
На сайте отображаются два одинаковых меню
Обычно в регионе остались два блока: старый Main navigation и новый блок с тем же меню. На странице Block layout найдите оба экземпляра, временно отключите один и сохраните конфигурацию. Проверяйте результат в браузере без учётной записи администратора: административные панели и панели отладки могут создавать дополнительное ощущение дублирования.
Термин, который важно не перепутать
Регион темы — заранее определённая область оформления Drupal, например шапка, подвал или боковая колонка. Блок меню можно разместить только в регионе, который объявлен текущей темой. Если нужного региона нет в списке, проблема не в пункте меню: это ограничение или настройка темы.
Что делать дальше
Создайте тестовую роль с теми же правами, что и обычный посетитель, и проверьте навигацию в трёх состояниях: на главной странице, на странице материала и на мобильной ширине. Отдельно проверьте активный пункт: посетителю должно быть понятно, в каком разделе он находится. Если меню содержит много ссылок, измерьте время до первого отображения страницы и размер HTML после включения кэширования — изменения навигации не должны незаметно ухудшать загрузку сайта.
После этого настройте резервное копирование конфигурации и документируйте, какое меню отвечает за шапку, подвал и разделы каталога. Это сэкономит время при смене темы или переносе сайта.
Защитник прав потребителей: Досудебные претензии на возврат товара со ссылками на ЗоЗПП.
Спросить за 15 ₽Источники: Drupal User Guide: Creating Menus, Drupal User Guide: Placing a Block
Частые вопросы
Почему меню Drupal не появляется после создания?
Почему администратор видит ссылку, а гость — нет?
Можно ли добавить в меню страницу, которой ещё нет?
Почему после перетаскивания пункт меню возвращается на старое место?
Нужно ли очищать весь кэш после каждой новой ссылки?
Что делать, если в Drupal используется другая тема?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.