Jump to main content Jump to doc navigation

Сниппет-генератор меню. Может заменить Wayfinder и даёт больше гибкости в параметрах.

Например, строит меню из нескольких родителей, показывая их вместе или отдельными ветками.

Даёт заметный прирост скорости, хотя только при первом просмотре страницы, если меню Wayfinder закэшировано.

Если вы не пользовались Wayfinder, прочитайте его документацию: pdoMenu переиспользует многие концепции и настройки Wayfinder. Документация здесь, или скачайте ebook Wayfinder на 184 страницы в этой теме.

Свойства

Name Default Description
&parents Current resource Список родителей для поиска результатов через запятую. 0 использует все ресурсы верхнего уровня. Если id родителя начинается с минуса, он и его потомки исключаются из результата.
&level 0 (no limit) Уровень (глубина) генерируемого меню.
&resources Список ресурсов для добавления в результаты через запятую. Если id начинается с минуса, ресурс исключается.
&templates Список шаблонов для фильтрации через запятую. Если id шаблона начинается с минуса, ресурсы с ним исключаются.
&where Дополнительный массив параметров в JSON.
&displayStart 0 Показывать родительский узел. Полезно при нескольких «parents».
&context Контекст ресурсов для построения меню.
&showHidden 0 Показывать ресурсы, скрытые в меню.
&showUnpublished 0 Показывать неопубликованные ресурсы всем.
&previewUnpublished 0 Показывать неопубликованные только авторизованным в менеджере с правом просмотра неопубликованных.
&hideSubMenus 0 Скрывать неактивные ветки подменю.
&select Список полей через запятую. Можно JSON-массив, например {"modResource":"id,pagetitle,content"}. По умолчанию выбираются все поля modResource. Не нужен, если используете [[+introtext]] и т. п., они уже доступны. Используйте, если нужны не все поля.
&sortby menuindex Любое поле ресурса для сортировки, включая TV из &includeTVs. Можно JSON с несколькими полями, например {"tvname":"ASC", "pagetitle":"DESC"}. Для случайной сортировки «RAND()».
&sortdir ASC Направление сортировки. Если &sortby и &sortdir пусты, порядок как в &resources.
&limit 0 Ограничение числа результатов. «0» без ограничений.
&offset 0 Пропуск результатов с начала. Используйте с &limit
&checkPermissions Какие права пользователя проверять при выводе ресурсов. Без указания права не проверяются. Например &checkPermissions=list
&countChildren 0 Считает число дочерних ресурсов каждого родителя и выводит в [[+children]]. Дополнительные запросы к БД, по умолчанию 0.
&toPlaceholder Если не пусто, сохраняет вывод в плейсхолдер с тем же именем вместо возврата меню.
&plPrefix wf. Префикс плейсхолдеров в чанках шаблонов
&showLog 0 Отладочная информация о работе сниппета. Только для авторизованных в менеджере.
&fastMode 0 Быстрый режим обработки чанков. Все «сырые» теги (output modifiers, сниппеты и т. д.) удаляются.
&cache 0 Кэширование результатов сниппета.
&cacheTime 3600 Время жизни кэша в секундах.
&scheme -1 (relative to site_url) Как генерируется URL, значения как в API modX::makeUrl().
&useWeblinkUrl 1 При 1 в «[[+link]]» выводится URL из weblink-ресурса, а не ссылка на сам weblink.
&rowIdPrefix Если задан, создаёт уникальный id для каждого пункта: rowIdPrefix + docId.
&hereId Текущий id для сниппета. Используйте [[*id]], если шаблон &tplHere и &tplParentRowActive не применяется к пункту меню.
&includeTVs Список TV через запятую. Например «action,time» даст [[+action]] и [[+time]]
&tvPrefix Префикс TV.

Свойства шаблонов

Эти параметры задают чанки с шаблонами частей генерируемого меню.

Как сказано выше, если вы не пользовались Wayfinder, хотя бы просмотрите его документацию перед своими чанками, хотя у pdoMenu чуть другая иерархия чанков.

Даже без документации обязательно включите [[+wrapper]] в чанки. Несмотря на имя, это плейсхолдер для содержимого обёртки (как [[*content]] в ресурсах). Он заменится содержимым подменю нижнего уровня. Без него часть меню или всё меню исчезнет без сообщения об ошибке.

Name Description
&tplOuter Чанк для всего блока меню. По умолчанию: @INLINE <ul[[+classes]]>[[+wrapper]]</ul>
&tpl Чанк для каждого ресурса. Если не указано, на экран выводятся поля ресурса. По умолчанию: @INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li>
&tplParentRow Чанк для контейнера с дочерними элементами.
&tplParentRowHere Чанк для текущего контейнера.
&tplHere Чанк для текущего ресурса
&tplInner Чанк-обёртка для секций подменю. Если пусто, используется &tplOuter
&tplInnerRow Чанк для строк подменю.
&tplInnerHere Чанк для текущего пункта подменю.
&tplParentRowActive Чанк для активной категории.
&tplCategoryFolder Специальный чанк для категорий. Категории: isfolder = 1 и пустой шаблон или атрибут «rel = category». Для пунктов верхнего уровня без активной ссылки.
&tplStart Чанк для родительского ресурса при &displayStart. По умолчанию: @INLINE <h2[[+classes]]>[[+menutitle]]</h2>[[+wrapper]]

Свойства CSS-классов

Эти параметры задают значения плейсхолдеров [[+classes]] и [[+classnames]] для частей меню.

Name Description
&firstClass Класс первого пункта меню. По умолчанию: first
&lastClass Класс последнего пункта. По умолчанию: last
&hereClass Класс активного пункта и его родителей. По умолчанию: active
&parentClass Класс родительских пунктов.
&rowClass Класс каждой строки меню.
&outerClass Класс внешней обёртки.
&innerClass Класс внутренних обёрток подменю.
&levelClass Класс каждого уровня меню. Например «level» даст «level1», «level2» и т. д.
&selfClass Класс текущего документа в меню.
&webLinkClass Класс для weblink-ресурсов.

Примеры

Простое меню верхнего уровня:

[[pdoMenu?
    &parents=`0`
    &level=`1`
]]

Двухуровневое меню с исключением родителей:

[[pdoMenu?
    &parents=`-10,-15`
    &level=`2`
    &checkPermissions=`load,list,view`
]]

Меню из двух родителей с показом родителей:

[[pdoMenu?
    &parents=`10,15`
    &displayStart=`1`
]]

Список всех ресурсов за один проход:

[[pdoMenu?
    &parents=`0`
    &level=`2`
    &tplInner=`@INLINE [[+wrapper]]`
    &tplParentRow=`@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a> ([[+children]])</li>[[+wrapper]]`
    &countChildren=`1`
]]

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more