Меню в MODX: типичные грабли и как их обойти
Меню в MODX может пропускать страницы, показывать скрытые пункты или вести не туда — даже если ресурсы опубликованы. Разбираем, что проверить в дереве сайта, настройках Wayfinder и pdoMenu и кэше.

Меню в MODX часто ломается не в шаблоне, а на стыке дерева ресурсов, настроек сниппета и кэша: страница опубликована, но не показывается, ссылка ведёт не туда или пункт исчезает после переноса на другой контекст. Ниже — практические проверки для MODX Revolution 2.x и 3.x, независимо от того, собираете вы меню через Wayfinder или pdoMenu.
Сначала определите, кто строит меню
В MODX меню обычно выводит сниппет: стандартный getResources, дополнение Wayfinder или pdoTools с pdoMenu. Это не взаимозаменяемые имена для одной настройки. Если вы меняете параметры не того сниппета, меню может продолжить работать по старым правилам — либо начать отдавать пустой результат.
Посмотрите в шаблоне и чанках, какой тег вызывается: например, [[Wayfinder? ...]] или [[pdoMenu? ...]]. Затем найдите этот сниппет в диспетчере пакетов и проверьте, что он установлен. Для MODX Revolution 3.x отдельно убедитесь, что установленная версия дополнения совместима с вашей версией ядра: старые инструкции и параметры могут относиться к другой сборке.
Проверьте до изменений:
- какой именно сниппет формирует меню;
- какие шаблонные чанки он использует;
- из какого контекста загружаются ресурсы;
- включён ли кэш у вызова или сниппета.
Если вы не знаете, какие чанки отвечают за пункты и вложенность, начните с их имён в параметрах вызова, а не редактируйте все шаблоны подряд.
Проблема первая: ресурс есть, пункта меню нет
Опубликованная страница не обязательно должна попасть в меню. В MODX есть отдельное свойство «Показывать в меню» — в интерфейсе оно связано с полем hidemenu. Если ресурс скрыт, многие стандартные варианты вывода его не покажут. Проверьте это поле у самой страницы и у её родителя, если меню строится только по выбранной ветке.
Ещё одна причина — неверно выбран корень. Для Wayfinder обычно задают стартовый ресурс через &startId, а для pdoMenu — через &parents. Если передать ID страницы-категории, сниппет может показать только её потомков; если указать другой корень, нужная ветка останется за пределами выборки.
Не угадывайте ID по адресу страницы. Откройте ресурс в менеджере MODX и сверьте его числовой идентификатор. После этого проверьте, что выбранный родитель действительно находится выше нужных пунктов в дереве.
Проблема вторая: неверная глубина или порядок вложенности
Параметр глубины ограничивает число уровней, а не количество пунктов. Когда нужно показать разделы и подразделы, настройка уровня в один может выглядеть как «пропажа» страниц: они существуют, но лежат глубже заданной границы. В Wayfinder глубину задают параметром &level; в pdoMenu для ограничения уровня используют &level. Сверьте синтаксис именно с документацией установленной версии дополнения.
Порядок тоже берётся не из алфавита автоматически. На него влияют поля сортировки ресурса и параметры сортировки сниппета. Если пункты идут неожиданно, сначала проверьте порядок ресурсов в менеджере, затем настройки сортировки в вызове. Не стоит исправлять результат CSS-свойством: визуальная перестановка может не совпасть с порядком ссылок для клавиатурной навигации и вспомогательных технологий.
Проблема третья: ссылка неверная или ведёт в другой контекст
URL страницы в MODX зависит от настроек сайта, контекста и самого ресурса. При нескольких контекстах одна и та же ветка может иметь разные домены, базовые пути и правила формирования адресов. Поэтому не собирайте ссылку вручную из псевдонима ресурса, если сниппет умеет выводить корректный URL.
Если пункт ведёт на главную или страницу ошибки, проверьте контекст ресурса и настройки контекста, а также включённый режим дружественных URL. После переноса сайта проверьте базовый URL и конфигурацию веб-сервера: меню может выдавать ожидаемые адреса, но сервер не будет правильно обрабатывать такие маршруты.
Отдельная ловушка — ссылка на ресурс, который в другой среде имеет иной ID. Не переносите числовые ID между локальной, тестовой и рабочей базами как постоянные значения. Сверяйте ресурсы после импорта и используйте механизмы MODX для ссылок на ресурс там, где это предусмотрено шаблоном.
Проблема четвёртая: пункт есть, но выглядит не так
Сниппет не обязан выводить разметку, которую ожидает ваша тема. В Wayfinder за HTML отвечают шаблонные чанки вроде шаблона строки и обёртки; pdoMenu также использует шаблоны вывода. Если в чанке неверно написан плейсхолдер, класс или вложенная обёртка, результатом может стать ссылка без класса, лишний уровень списка или пустой пункт.
Проверяйте разметку в браузере через инспектор, а не только глазами по исходнику шаблона. Сначала убедитесь, что сниппет отдал нужный HTML, и лишь затем ищите причину в CSS. Если HTML неверный, стили не исправят структуру.
Опасная привычка — вставлять в шаблон пункта данные ресурса без экранирования. Если заголовок или другое поле может содержать пользовательский ввод, проверьте, как именно оно выводится. Не отключайте экранирование «на всякий случай»: это может открыть путь к внедрению HTML или скрипта.
Проблема пятая: изменения не появляются
MODX кэширует результаты, поэтому после правки чанка или свойств ресурса вы иногда видите прежнее меню. Очистите кэш через менеджер и перезагрузите страницу без локального кэша браузера. Если проблема сохраняется, проверьте, не кэширует ли результат сам вызов сниппета и не отдаёт ли страницу внешний кэш — например, прокси или CDN.
Не отключайте кэширование на всём сайте только потому, что меню не обновилось. Сначала выясните, где устарел результат. Постоянный некэшируемый вызов на часто посещаемой странице может увеличить нагрузку, а проблему с неверным корнем или настройками не устранит.
Если пункт меню пропал, проверяйте путь от ресурса к выводу: свойства страницы, её место в дереве, параметры сниппета, шаблон и только потом кэш.
Как выбрать точку проверки
| Симптом | Что проверить первым | Следующий шаг |
|---|---|---|
| Не видно страницы | «Показывать в меню» и родителя | Корень и глубину выборки |
| Пункты стоят не по порядку | Сортировку ресурса | Параметр сортировки сниппета |
| Ссылка ведёт не туда | ID и контекст ресурса | Дружественные URL и базовый адрес |
| Сломана вложенность | HTML чанка строки и обёртки | Структуру списка в браузере |
| Видна старая версия меню | Кэш MODX | Кэш браузера, прокси или CDN |
Когда что выбирать
Если сайт уже использует Wayfinder, сначала исправьте его вызов и чанки: замена дополнения добавит переменных и может затронуть разметку. Если проект использует pdoTools, держите параметры меню в одном вызове pdoMenu и сверяйте их с документацией установленной версии. Для простой навигации не добавляйте сложный шаблон только ради одного класса — класс можно задать в шаблоне пункта, если структура вывода это позволяет.
При диагностике меняйте по одному параметру за раз. Иначе после очистки кэша вы не поймёте, какое изменение решило проблему. Сначала добейтесь правильного набора ресурсов, затем — правильных ссылок, после этого настраивайте HTML и стили.
Сноска. Контекст в MODX — отдельная конфигурация сайта или его части: она может задавать домен и базовые настройки. Ресурс одного контекста не всегда должен выводиться в меню другого.
Что делать дальше
Возьмите один проблемный пункт и пройдите таблицу сверху вниз. Зафиксируйте ID ресурса, его родителя и контекст, затем проверьте вызов сниппета и HTML в браузере. Когда меню заработает, проверьте его на мобильном экране и клавиатурной навигации: правильные ссылки ещё не гарантируют удобную навигацию.
Логотип и фирменный стиль: Три концепции разного характера, палитра с обоснованием, проверка на читаемость в малом размере и в один цвет.
Спросить за 60 ₽Источники: MODX Documentation: Tag Syntax, pdoTools — репозиторий проекта
Частые вопросы
Почему опубликованная страница не отображается в меню MODX?
Как понять, используется Wayfinder или pdoMenu?
Почему пункт меню ведёт на неправильный адрес?
Я изменил меню, но сайт показывает старую версию. Что делать?
Можно ли использовать одни и те же настройки меню в MODX 2 и MODX 3?
Что делать, если после правки меню сломалась вложенность?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.