Разное

Modx revo pdomenu параметры: pdoMenu / Сниппеты / pdoTools / docs.modx.pro

Содержание

pdoMenu / Сниппеты / pdoTools / docs.modx.pro

Сниппет генерации меню. Может заменять Wayfinder, и позволяет более гибко указывать параметры.

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

Существенный прирост скорости дает только при первом запуске, дальше Wayfinder не особо уступает, благодаря грамотному кэшированию.

Параметры

По умолчанию pdoMenu принимает общие параметры pdoTools и некоторые свои:

НазваниеПо умолчаниюОписание
&parentsТекущий ресурсСписок родителей для поиска результатов, через запятую. Если поставить &parents=`0` — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
&level0 (не ограниченно)Уровень генерируемого меню.
&resourcesСписок ресурсов для вывода в результатах, через запятую. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
&templatesСписок шаблонов для фильтрации результатов, через запятую. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки.
&whereМассив дополнительных параметров выборки, закодированный в JSON.
&displayStart0Включить показ начальных узлов меню. Полезно при указании более одного «parents».
&contextОграничение выборки по контексту ресурсов.
&showHidden0Показывать ресурсы, скрытые в меню.
&showUnpublished0Показывать неопубликованные ресурсы.
&previewUnpublished0Включить показ неопубликованных ресурсов, если у пользователя есть на это разрешение.
&hideSubMenus0Спрятать неактивные ветки меню.
&selectСписок полей для выборки, через запятую. Можно указывать JSON-строку с массивом, например &select=`{«modResource»:»id,pagetitle,content»}`
&sortbymenuindexЛюбое поле ресурса для сортировки, включая ТВ-параметр, если он указан в параметре &includeTVs, например &sortby=`{«tvname»:»ASC»,»pagetitle»:»DESC»}`. Можно указывать JSON-строку с массивом нескольких полей. Для случайной сортировки укажите &sortby=`RAND()`
&sortdirASCНаправление сортировки: по убыванию или по возрастанию. Если оставить параметры &sortby и &sortdir пустыми, то сортировка будет идти по порядку ресурсов в &resources.
&limit0Ограничение количества результатов выборки.
&offset0Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit
&checkPermissionsУкажите, какие разрешения нужно проверять у пользователя при выводе ресурсов, например &checkPermissions=`list`.
&countChildren0Точный подсчет количества дочерних ресурсов каждой категории и вывод их в плейсхолдер [[+children]]. Делает дополнительные запросы в БД, поэтому по умолчанию отключен.
&toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем вместо вывода на экран.
&plPrefixwf.Префикс для выставляемых плейсхолдеров.
&showLog0Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекcте «mgr».
&fastMode0Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны.
&cache0Кэширование результатов работы сниппета.
&cacheTime3600Время актуальности кэша, в секундах.
&scheme-1Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции.
&useWeblinkUrl1Генерировать ссылку с учетом класса ресурса.
&rowIdPrefixПрефикс для выставления идентификатора в чанк.
&hereIdid текущего ресурса для генерируемого меню. Нужно указывать только если скрипт сам его неверно определяет, например при выводе меню из чанка другого сниппета.
&includeTVsСписок ТВ-параметров для выборки, через запятую. Например &includeTVs=`action,time` дадут плейсхолдеры [[+action]] и [[+time]].
&prepareTVsСписок ТВ-параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить &prepareTVs=`1`, будут подготовлены все ТВ, указанные в &includeTVs.
&processTVsСписок ТВ-параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить &processTVs=`1`, будут обработаны все ТВ, указанные в &includeTVs. Замедляет работу.
&tvPrefixПрефикс для ТВ-параметров.

Параметры шаблонов

Эти параметры устанавливают чанки, которые содержат шаблоны для генерации меню.

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

Параметры CSS классов

Эти параметры задают значение плейсхолдеров [[+classnames]] и [[+classes]] для различных элементов меню. Плейсхолдер [[+classnames]] выводит только название класса без атрибута class=»», в отличие от плейсхолдера [[+classes]].

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

Примеры

Обычный вывод меню из корня сайта в один уровень:

[[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`
]]

Параметры шаблонов pdoMenu | Зона MODX

Если вы читаете данную статью, значит, во-первых, вы знаете, что такое pdoMenu и pdoTools, а во-вторых, у вас возникли трудности с пониманием какой параметр шаблона для чего нужен.

Блондинка едет в машине. И по радио говорят: «Вы слушаете радио Европа плюс». Блондинка удивлённо: «Откуда они знают?»

Шаблонов у pdoMenu больше 10. Вот их полный список. Давайте теперь последовательно их разберём.

Параметр tplOuter

Это самый первый параметр в описании. Он содержит или название чанка или код инлайн-чанка, который будет контейнером для пунктов меню. По-умолчанию, в нём указано @INLINE <ul[[+classes]]>[[+wrapper]]</ul>. Плейсхолдер [[+wrapper]] будет заменён на пункты меню. А в плейсхолдер [[+classes]] подставится значение параметра outerClass, в котором указывается класс контейнера меню. В принципе, можно сразу указать нужный класс в шаблоне. В этом случае параметр outerClass можно не использовать.


[[pdoMenu?
    &tplOuter = `@INLINE <ul>[[+wrapper]]</ul>`
    ...
]]
Параметр tpl

Он отвечает за формирование пунктов меню. В нём также указывается чанк (обычный или инлайн). По-умолчанию, он содержит шаблон элемента списка для контейнера, указанного в предыдущем параметре —


@INLINE <li[[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li>

Мы тут видим элемент li, который содержит ссылку на страницу. За ссылку отвечает плейсхолдер [[+link]], который формируется согласно параметру scheme. Если вы используете относительные ссылки, то [[+link]] можно безболезненно заменить на [[+uri]].

Плейсхолдеры [[+attributes]] и [[+menutitle]] содержат значение полей ресурса link_attribute и menutitle соответственно. Тут надо отметить, что если поле menutitle пустое, то в плейсхолдер [[+menutitle]] будет записано значение поля pagetitle.

В плейсхолдере [[+classes]] хранятся классы, указанные в параметрах классов, за исключением параметров outerClass и innerClass. Эти параметры используются в шаблонах-контейнерах, указанных в tplOuter и tplInner соответственно. В документации про классы описано достаточно понятно.

Запомните!

Есть одна ломающая логическую парадигму тонкость — параметр шаблона для активных элементов меню имеет суффикс «Active», параметры текущих элементов — суффикс «Here» (tplHere, tplParentHere). А у классов — для активного пункта предназначен параметр hereClass со значением по-умолчанию «active», а для текущего пункта — параметр selfClass.

Было бы логичнее назвать их по аналогии с шаблонами activeClass и hereClass соответственно.

На всякий случай поясню, что текущий пункт — это текущая открытая страница, а активные пункты — это текущая страница и её родители.

Плейсхолдер [[+wrapper]] необходим для вывода следующего уровня меню. Если его убрать, то дочерние ресурсы показываться не будут, т.е. будет отображён только первый уровень меню.

В принципе этих двух параметров хватит для вывода меню. Достаточно указать родителя и уровень вложенности:


[[pdoMenu?
    &parents=`0`
    &level=`2`
]]
Параметр tplHere

Если вы хотите, чтобы текущий пункт меню отличался от остальных не только классом, но и разметкой (например, вместо ссылки должен быть текст), то в этом случае на помощь придёт параметр tplHere.


[[pdoMenu?
    &parents=`0`
    &level=`2`
    &tplHere=`@INLINE <li [[+classes]]><span>[[+menutitle]]</span>[[+wrapper]]</li>`
]]
Параметр tplParentRow

Этот параметр используется в тех случаях, когда нужно выделить пункт меню, у которого есть подменю, и одним классом не обойтись. Например, добавить дополнительные элементы в разметку — треугольники, картинки и т.п.

У меня в разделе Документация этот параметр выглядит так


&tplParentRow = `@INLINE <li [[+classes]]><i></i> <a href="[[+link]]">[[+menutitle]]</a><div>[[+wrapper]]</div></li>`
Параметр tplParentRowHere

В этом параметре указывается шаблон для открытой страницы-контейнера. Если вы указали шаблон в tplParentRow, то придётся определять шаблон и для этого параметра. В противном случае для текущего пункта меню будет использоваваться шаблон, указанный в параметре tplHere, который используется для обычных пунктов, т.е. не контейнеров.

Параметр tplParentRowActive

Шаблон, указанный в данном параметре, используется для отображения всех родителей текущей страницы. Т.е. если вы выбрали ресурс, находящийся на 3-ем уровне, то родительские пункты меню первого и второго уровня отрисуются согласно шаблону, указанному в этом параметре. Если его не указывать, то будет использован шаблон из tplParentRow (или tpl, если не указан tplParentRow).

Теперь давайте рассмотрим параметры для вложенного меню — tplInner, tplInnerRow и tplInnerHere.

Параметр tplInner

Шаблон из этого параметра является обёрткой для вложенных пунктов меню. Обычно это ul элемент. Т.е. он аналогичен шаблону tplOuter. И если его не указать, то tplOuter и будет использоваться.

Параметр tplInnerRow

Является аналогом tpl, но используется только для вложенных пунктов. Если не указан, то вместо него будет применён шаблон tpl.

Параметр tplInnerHere

Заменяет шаблон из tplHere для вложенных пунктов.

Вот как это выглядит.


<ul>                                               // tplOuter
    <li>Первый пункт. Содержит подменю. Активный   // tplParentRowActive
        <ul>                                       // tplInner
            <li>Первый подпункт, текущий</li>      // tplInnerHere
            <li>Второй подпункт</li>               // tplInnerRow
        </ul>
    </li>
    <li>Второй пункт. Содержит подменю             // tplParentRow
        <ul>                                       // tplInner
            <li>Первый подпункт</li>               // tplInnerRow
            <li>Второй подпункт</li>               // tplInnerRow
        </ul>
    </li>
    <li>Третий пункт</li>                          // tpl
</ul>
Параметр tplCategoryFolder

Этот параметр позволяет задать шаблон для отдельных пунктов меню. Вот что указано в документации —

Специальный чанк оформления категории. Категория — это документ с «isfolder = 1» и или нулевым шаблоном, или с атрибутом «rel=category»

Этот шаблон предназначен для каких-то специфических случаев.

Параметр levelClass

Это важный параметр. Он позволяет указать уровень пунктов меню через название класса. Т.е. если задать значение «level», то у элементов первого уровня будет класс «level1», у второго — «level2» и т.д. Это упрощает задачу оформления меню.

Надеюсь, стало более менее понятно.


1

 
19171

pdoMenu как замена Wayfinder / Сниппеты / Modx Revolution / Технический блог веб-разработчика

pdoMenu как замена Wayfinder

Эти два сниппета используются для построения меню на основе дерева ресурсов Modx Revo. pdoMenu по сравнению с Wayfinder работает значительно шустрее, да и по функционалу и гибкости несомненно у последнего выигрывает. Поэтому на всех разрабатываемых мною сайтах, я постепенно стал отказываться от Wayfinder в пользу pdoMenu. Но поскольку их параметры изредка да отличаются, чтобы такой переход был безболезненным, в этой статье я решил пройтись по всем параметрам двух сниппетов, объединив схожие по назначению параметры в одну строку. Таким образом, если вы решите перейти с Wayfinder на pdoMenu, вам просто нужно будет заменить значение из первого столбика на второе. Впрочем справедливо и обратное утверждение, однако я пока что не встречал таких случаев, чтобы в этом была необходимость. 

Основные параметры


















Wayfinder (значение по умолчанию)pdoMenu (значение по умолчанию)Применение

&startId=`[­[*id]]`

&parents=`[­[*id]]`

Wayfinder. В качестве параметра указывается ресурс, от начала которого будет построено меню. 0 — означает что от самого корня, ни один ресурс не будет пропущен. 

pdoMenu. В parents через запятую можно указывать несколько родителей. Если имя ресурса начинается с «дефиса», то он исключается из выборки. 

&displayStart=`0`

&displayStart=`0`

Включать ли самого родителя, от которого строится меню, в выборку. 0 — не включать. 

&level=`0`

&level=`0`

Максимальный уровень вложенности. 0 — показывать все уровни. 

&ignoreHidden=`0`

&showHidden=`0`

Игнировать ли настройку ресурса — «Не показывать в меню». 0 — не игнорировать. 

&ph=`0`

&toPlaceholder

Если значение не пусто, то все данные будут сохранены в плэйсхолдер, вместо их вывода на экран. 

&hideSubMenus=`0`

&hideSubMenus=`0`

Прятать неактивные ветки меню. 0 — не прятать.  

&rowIdPrefix=`0`

&rowIdPrefix

Если значение не пусто, то будет использоваться заданный префикс, который будет указан перед id документа. 

&useWeblinkUrl=`1`

&useWeblinkUrl=`1`

Генерировать ссылку на ресурс или нет. Станет доступна в плэйсхолдере [­[+link]]. 

&includeDocs 
&excludeDocs

&resources

pdoMenu. Если значение не пусто, то в меню будут выведены только указанные ID ресурсов. Указываются через запятую. Если ID ресурса начинается с дефиса, то он исключается из выборки. 

Wayfinder. За выборку определённых ресурсов отвечает параметр &includeDocs, за исключение — &excludeDocs.

&cacheResults

&cache=`0`

Кэшировать ли результаты сниппета. 0 — не кэшировать, 1 — кэшировать. 

&cacheTime=`3600`

&cacheTime=`3600`

Время хранения кэша, если включено кэширование результатов работы сниппета. 

&contexts

&context

Если не пусто, то выборка ограничивается по заданному контексту. 

&scheme=`-1`

&scheme=`-1`

Схема формирования URL: 
-1 — относительно настройки site_url
 0 — абсолютный путь по протоколу http
 1 — абсолютный путь по протоколу https
full — абсолютный путь, при построении используется настройка site_url
abs — абсолютный путь, при построении используется настройка base_url
http — то же самое что и 0
https — то же самое что и 1

&sortBy
&sortOrder

&sortby=`menuindex`

Поле, по которому будет производиться сортировка. 
Wayfinder. Для задания направление сортировки используется отдельный параметр sortOrder.
pdoMenu. Позволяет производить сортировку так же и по TV полю, если оно подключено в настройке includeTVs. Причём позволяет сортировать сразу по нескольким полям одновременно, если задать строку JSON формата, например: {«tvname»:»ASC», «pagetitle»:»DESC»}. В качестве значения используется направление для сортировки. Для случайной сортировки используется RAND()

&where

&where

JSON строка, в которой задаются параметры для выборки данных. Например: &where=`[{«class_key:!=»: «msCategory»}]` То есть, не выводить те ресурсы, которые являются категориями Minishop. 

&hereId

&hereId

ID итерируемого (который обрабатывается именно сейчас) документа. Используется в тех случаях, когда сам сниппет по каким-то причинам определяет его неправильно. 

&hereTpl

&tplHere

Чанк текущего (активного) документа.

 Параметры шаблонов












Wayfinder (значение по умолчанию)pdoMenu (значение по умолчанию)Применение

&outerTpl
Значение по умолчанию: <ul[­[+wf.classes]]>[­[+wf.wrapper]]</ul>

&tplOuter=`@INLINE <ul[­[+classes]]>[­[+wrapper]]</ul>`

Чанк-обёртка всех пунктов меню.
Wayfinder. Задаётся отдельным чанком, при этом доступен плэйсхолдер: [­[+wf.wrapper]]

 

&rowTpl
Значение по умолчанию: <li[­[+wf.id]][­[+wf.classes]]><a href=»[­[+wf.link]]» title=»[­[+wf.title]]» [­[+wf.attributes]]>[­[+wf.linktext]]</a>[­[+wf.wrapper]]</li>

&tpl=`@INLINE <li[­[+classes]]><a href=»[­[+link]]» [­[+attributes]]>[­[+menutitle]]</a>[­[+wrapper]]</li>`

Чанк оформления пункта меню. 
pdoMenu. Если в качестве имени указан несуществующий чанк, то произойдёт распечатка всех плэйсхолдеров. 

&startItemTpl
Значение по умолчанию: <h3[­[+wf.id]][­[+wf.classes]]>[­[+wf.linktext]]</h3>[­[+wf.wrapper]]

&tplStart=`@INLINE <h3[­[+classes]]>[­[+menutitle]]</h3>[­[+wrapper]]`

Чанк оформления корневого пункта меню, при условии что активирован параметр displayStart. 

&parentRowHereTpl

&tplParentRowHere

Чанк оформления текущего ресурса, при условии что он содержит дочерние ресурсы. 
Wayfinder. Для вывода дочерних ресурсов используется плэйсхолдер [­[+wf.wrapper]]
pdoMenu. Для вывода дочерних ресурсов используется плэйсхолдер [­[+wrapper]]

&parentRowTpl

&tplParentRow

Чанк оформления ресурса-контейнера с потомками.  
Wayfinder. Для вывода дочерних ресурсов используется плэйсхолдер [­[+wf.wrapper]]
pdoMenu. Для вывода дочерних ресурсов используется плэйсхолдер [­[+wrapper]]

&hereTpl

&tplHere

Чанк текущего (активного) документа. 

&innerTpl

&tplInner

Чанк внутренней обёртки, которая используется при выводе подменю. Удобно, когда внутреннему ul мы хотим задать какой-то иной класс.
pdoMenu. При пустом значении будет использоваться параметр &tplOuter

&innerRowTpl

&tplInnerRow

Чанк оформления пункта меню, который в свою очередь находится внутри внутреннего ul. 

&innerHereTpl

&tplInnerHere

Чанк оформления активного пункта меню, который в свою очередь находится внутри внутреннего ul. 

&activeParentRowTpl

&tplParentRowActive

Чанк оформления активного ресурса-контейнера с потомками. 

&categoryFoldersTpl

&tplCategoryFolder

Чанк оформления категории. Под категорией подразумевается ресурс-контейнер, у которого пустой шаблон или присутствует атрибут rel=category. 

Параметры CSS классов











Wayfinder (значение по умолчанию)pdoMenu (значение по умолчанию)Применение

&firstClass

&firstClass=`first`

Класс для первого пункта в меню.

&lastClass=`last`

&lastClass=`last`

Класс для последнего пункта в меню.

&hereClass=`active`

&hereClass=`active`

Класс для активного пункта меню (включая все меню верхнего уровня).

&selfClass

&selfClass

Класс для активного пункта меню (но не для всей цепочки).

&parentClass=`parent`

&parentClass

Класс для пункта меню, который является контейнером и имеет детей. 

&rowClass

&rowClass

Класс для каждой строки меню. 

&levelClass

&levelClass

Класс для каждого уровня меню. Если указать level, то будет сгенерировано level1, level2, level3 и т. д.

&outerClass

&outerClass

Класс для обёртки меню. 

&innerClass

&innerClass

Класс для внутренних пунктов меню. 

&webLinkClass

&webLinkClass

Класс для пункта меню типа «Ссылка».

Примеры работы

Для того чтобы построить самое простое меню, которое выведет пункты меню только первого уровня от корня, достаточно вызвать снипет так:

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

А вот и пример того, насколько сниппет вообще может быть гибким:

[­[!pdoMenu?
  &parents=`2`
  &level=`2`
  &tplOuter=`@INLINE<ul>[­[+wrapper]]</ul>`
  &tplInner=`@INLINE<ul>[­[+wrapper]]</ul>`
  &tplParentRow=`@INLINE <li><a href="[­[+link]]"><span>[­[+menutitle]]</span></a>[­[+wrapper]]</li>`
  &hereClass=`selected` 
]]

Фактически здесь мы кастомизировали обёртку как для первого, так и второго уровня вложенности.

Однако, это лишь малая часть того, как можно использовать сниппет — благодаря его гибкости, вариантов может быть бесконечно много. 

pdoMenu

Оглавление

  • Примеры
  • pdoMenu — сниппет предназначен для генерации меню. Умеет строить меню сразу из нескольких родителей, отображая их как вместе, так и отдельными ветками.

    #

    Параметры

    Параметры сниппета pdoMenu.

    #

    Параметры построения меню

    По умолчанию pdoMenu принимает общие параметры pdoTools и некоторые свои:

    НазваниеПо умолчаниюОписание
    &parentsТекущий ресурсСписок родителей для поиска результатов, через запятую. Если поставить &parents=`0` — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
    &level0 (не ограниченно)Уровень генерируемого меню.
    &resourcesСписок ресурсов для вывода в результатах, через запятую. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
    &templatesСписок шаблонов для фильтрации результатов, через запятую. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки.
    &whereМассив дополнительных параметров выборки, закодированный в JSON.
    &displayStart0Включить показ начальных узлов меню. Полезно при указании более одного «parents».
    &contextОграничение выборки по контексту ресурсов.
    &showHidden0Показывать ресурсы, скрытые в меню.
    &showUnpublished0Показывать неопубликованные ресурсы.
    &previewUnpublished0Включить показ неопубликованных ресурсов, если у пользователя есть на это разрешение.
    &hideSubMenus0Спрятать неактивные ветки меню.
    &selectСписок полей для выборки, через запятую. Можно указывать JSON-строку с массивом, например &select=`{«modResource»:»id,pagetitle,content»}`
    &sortbymenuindexЛюбое поле ресурса для сортировки, включая ТВ-параметр, если он указан в параметре &includeTVs, например &sortby=`{«tvname»:»ASC»,»pagetitle»:»DESC»}`. Можно указывать JSON-строку с массивом нескольких полей. Для случайной сортировки укажите &sortby=`RAND()`
    &sortdir ASCНаправление сортировки: по убыванию или по возрастанию. Если оставить параметры &sortby и &sortdir пустыми, то сортировка будет идти по порядку ресурсов в &resources.
    &limit0Ограничение количества результатов выборки.
    &offset0Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit.
    &checkPermissions Укажите, какие разрешения нужно проверять у пользователя при выводе ресурсов, например &checkPermissions=`list`.
    &countChildren0Точный подсчет количества дочерних ресурсов каждой категории и вывод их в плейсхолдер [[+children]]. Делает дополнительные запросы в БД, поэтому по умолчанию отключен.
    &toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем вместо вывода на экран.
    &plPrefixwf.Префикс для выставляемых плейсхолдеров.
    &showLog0Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекcте «mgr».
    &fastMode0Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны.
    &cache0Кэширование результатов работы сниппета.
    &cacheTime3600Время актуальности кэша, в секундах.
    &scheme-1Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции.
    &useWeblinkUrl1Генерировать ссылку с учетом класса ресурса.
    &rowIdPrefixПрефикс для выставления идентификатора в чанк.
    &hereIdid текущего ресурса для генерируемого меню. Нужно указывать только если скрипт сам его неверно определяет, например при выводе меню из чанка другого сниппета.
    &includeTVsСписок ТВ-параметров для выборки, через запятую. Например &includeTVs=`action,time` дадут плейсхолдеры [[+action]] и [[+time]].
    &prepareTVsСписок ТВ-параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить &prepareTVs=`1`, будут подготовлены все ТВ, указанные в &includeTVs.
    &processTVsСписок ТВ-параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить &processTVs=`1`, будут обработаны все ТВ, указанные в &includeTVs. Замедляет работу.
    &tvPrefixПрефикс для ТВ-параметров.

    #

    Параметры шаблонов

    Эти параметры устанавливают чанки, которые содержат шаблоны для генерации меню.

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

    #

    Параметры CSS классов

    Эти параметры задают значение плейсхолдеров [[+classnames]] и [[+classes]] для различных элементов меню. Плейсхолдер [[+classnames]] выводит только название класса без атрибута class=»», в отличие от плейсхолдера [[+classes]].

    НазваниеПо умолчаниюОписание
    &firstClassfirstКласс для первого пункта меню.
    &lastClasslastКласс последнего пункта меню.
    &hereClassactiveКласс для активного пункта меню.
    &parentClassКласс категории меню.
    &rowClassКласс пункта меню.
    &outerClassКласс обертки блока меню.
    &innerClassКласс обертки блока подпунктов меню.
    &levelClassКласс уровня меню. Например если укажите «level», то будет «level1», «level2» и т.д.
    &selfClass Класс текущего ресурса в меню.
    &webLinkClass Класс ресурса-ссылки.

    #

    Примеры

    Обычный вывод меню из корня сайта в один уровень:

    /* modParser */
    [[pdoMenu?
        &parents=`0`
        &level=`1`
    ]]
    
    /* pdoParser */
    {$_modx->runSnippet('!pdoMenu', [
    'parents' => 0,
    'level' => 1,
    ])}

    Вывод с исключением определенных родителей и проверкой разрешений пользователя:

    /* modParser */
    [[pdoMenu?
        &parents=`-10,-15`
        &level=`2`
        &checkPermissions=`load,list,view`
    ]]
    
    /* pdoParser */
    {$_modx->runSnippet('!pdoMenu', [
    'parents' => '-10,-15',
    'level' => 2,
    'checkPermissions' => 'load,list,view',
    ])}

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

    /* modParser */
    [[pdoMenu?
        &parents=`10,15`
        &displayStart=`1`
    ]]
    
    /* pdoParser */
    {$_modx->runSnippet('!pdoResources', [
    'parents' => '10,15',
    'displayStart' => 1,
    ])}

    Вывод двух уровней ресурсов с подсчетом количества вложенных:

    /* modParser */
    [[pdoMenu?
        &parents=`0`
        &level=`2`
        &tplInner=`@INLINE [[+wrapper]]`
        &tplParentRow=`@INLINE <li [[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a> ([[+children]])</li>[[+wrapper]]`
        &countChildren=`1`
    ]]
    
    /* pdoParser */
    {$_modx->runSnippet('!pdoResources', [
    'parents' => 0,
    'level' => 2,
    'tplInner' => '@INLINE {$wrapper}',
    'tplParentRow' => '@INLINE <li {$classes}><a href="{$link}" {$attributes}>{$menutitle}</a> ({$children})</li>{$wrapper}',
    'countChildren' => 1,
    ])}

    Время работы: 0,1409 s
    Время запросов: 0,1409 s
    Количество запросов: 24
    Источник: cache

    Общие параметры / pdoTools / Компоненты / docs.modx.pro

    • Общие параметры

    Общие параметры для сниппетов, основанных на pdoTools/pdoFetch.

    Параметры выборки ресурсов

    Эти параметры определяют, какие объекты будут получены.

    НазваниеПо умолчаниюОписание
    &classmodResourceКласс получаемого объекта
    &parentsТекущий ресурсСписок родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
    &depth10Глубина поиска дочерних ресурсов от родителя.
    &resourcesСписок ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
    &templatesСписок шаблонов, через запятую, для фильтрации результатов. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки.
    &contextОграничение выборки по контексту ресурсов.
    &whereМассив дополнительных параметров выборки, закодированный в JSON.
    &showHidden0Показывать ресурсы, скрытые в меню.
    &showUnpublished0Показывать неопубликованные ресурсы.
    &showDeleted0Показывать удалённые ресурсы.
    &hideContainers0Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1».
    &hideUnsearchableОтключает вывод спрятанных от поиска ресурсов.
    &selectСписок полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {«modResource»:»id,pagetitle,content»}.
    &leftJoinАналог SQL оператора left join
    &rightJoinАналог SQL оператора right join
    &innerJoinАналог SQL оператора inner join
    &joinSequenceinnerJoin,leftJoin,rightJoinПорядок подключения таблиц, через зяпятую.
    &sortbypagetitleЛюбое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей. Для случайно сортировки укажите «RAND()»
    &sortdirASCНаправление сортировки: по убыванию или возрастанию.
    &groupbyУказывает поле, по которому группируются результаты
    &havingИспользуется, чтобы ограничить выборку сгруппированных строк с помощью условия, относящегося ко всей группе, заданной в &groupby
    &limit0Ограничение количества результатов выборки. Можно использовать «0».
    &offset0Пропуск результатов от начала.
    &first1Номер первой итерации вывода результатов.
    &lastАвтоматически, по формуле (total + first — 1)Номер последней итерации вывода результатов.
    &loadModelsСписок компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery,msearch3`.
    &tvFiltersСписок фильтров по ТВ, с разделителями AND и OR. Разделитель, указанный в параметре &tvFiltersOrDelimiter представляет логическое условие OR и по нему условия группируются в первую очередь. Внутри каждой группы вы можете задать список значений, разделив их &tvFiltersAndDelimiter. Поиск значений может проводиться в каком-то конкретном ТВ, если он указан «myTV==value», или в любом «value». Пример вызова: &tvFilters=`filter2==one,filter1==bar%||filter1==foo`. Обратите внимание: фильтрация использует оператор LIKE и знак «%» является метасимволом. И еще: Поиск идёт по значениям, которые физически находятся в БД, то есть, сюда не подставляются значения по умолчанию из настроек ТВ.
    &tvFiltersAndDelimiter«,»Разделитель для условий AND в параметре &tvFilters.
    &tvFiltersOrDelimiter«||»Разделитель для условий OR в параметре &tvFilters.
    &sortbyTVДополнительное поле, по которому нужно сортировать результаты. Может быть указано напрямую в параметре &sortby
    &sortdirTVНаправление сортировки по дополнительному полю, указанному в &sortbyTV. Может быть указано напрямую в параметре &sortby
    &sortbyTVTypeТип сортировки по ТВ параметру. Возможные варианты: string, integer, decimal и datetime. Если пусто, то ТВ будет отсортирован в зависимости от его типа: как текст, число или дата.
    &checkPermissionsУкажите, какие разрешения нужно проверять у пользователя при выводе объектов.
    &disableConditionsОтключает специфичные для класса modResource параметры выборки.
    &fenomModifiersсписок сниппетов-модификаторов через запятую, для подключения в Fenom. Подробности в соответствующем разделе.

    Параметры шаблонов

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

    НазваниеОписание
    &tplИмя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран.
    &tplFirstИмя чанка для первого ресурса в результатах.
    &tplLastИмя чанка для последнего ресурса в результатах.
    &tplOddИмя чанка для каждого чётного ресурса (хоть «odd» значит «нечётный», работает для чётных ресурсов).
    &tpl_NИмя чанка для N-го ресурса, например, &tpl_4=`tpl4th` установит шаблон для 4-го ресурса.
    &tpl_nNИмя чанка для каждого N-го ресурса, например, &tpl_n4=`tplEvery4th` будет применено к каждому 4-му ресурсу.
    &tplConditionПоле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls.
    &tplOperatorНеобязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls.
    &conditionalTplsJSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей.
    &outputSeparatorНеобязательная строка для разделения результатов работы.

    Параметры результатов

    Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.

    НазваниеПо умолчаниюОписание
    &returnchunksОпределяет способ вывода результатов. См. ниже.
    &fastMode0Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны.
    &nestedChunkPrefixpdotools_Префикс для «быстрых плейсхолдеров», включаемых параметром &fastMode
    &idxВы можете указать стартовый номер итерации вывода результатов.
    &totalVartotalИмя плейсхолдера для сохранения общего количества результатов.
    &includeContent0Включаем поле «content» в выборку.
    &includeTVsСписок ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
    &includeTVListПсевдоним &includeTVs
    &prepareTVs1Список ТВ параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить в «1», будут подготовлены все ТВ, указанные в &includeTVs.
    &processTVsСписок ТВ параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs. Замедляет работу.
    &tvPrefixtv. у pdoResources и пусто у других сниппетовПрефикс для ТВ параметров.
    &prepareSnippet1Указывает сниппет, который принимает данные перед выводом в чанк и может их менять или добавлять
    &decodeJSONРазбирает поля типа JSON вместо вывода в виде строки
    &scheme-1Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции.
    &useWeblinkUrlГенерировать ссылку с учетом класса ресурса.
    &toSeparatePlaceholdersЕсли вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]], [[+myPl1]] и т.д.
    &additionalPlaceholdersУстанавливает дополнительные плейсхолдеры
    &cache_keyЗначение системной настройки cache_resource_key для ресурсов (по умолчанию resource) или defaultКлюч кеширования
    &cache_handlerЗначение системной настройки cache_resource_handler или xPDOFileCacheОбработчик кеша
    &cacheTimeЗначение системной настройки cache_resource_expires или 0 (вечный)Время жизни кеша

    Способы вызова чанков

    Все чанки могут иметь один из следующих префиксов:

    @INLINE или @CODE. В качестве шаблона будет использован код после этого префикса.

    [[!pdoResources?
        &parents=`0`
        &tpl=`@INLINE <li>{{+pagetitle}}</li>`
    ]]

    В INLINE чанках нельзя указывать сниппеты, другие чанки или фильтры вывода через обычные теги, потому что так парсер MODX обработает их в первую очередь, и сниппет получит совсем не то, что вы хотели.

    Поэтому для INLINE чанков предусмотрена замена [[+]] на {{+}} — такие теги MODX пропускает, а pdoTools при работае конвертирует их как нужно. Конечно, вы всё равно можете использовать теги MODX, если вам нужно, чтобы в чанк попала уже обработанная информация, например:

    [[!pdoResources?
        &parents=`0`
        &tplFirst=`@INLINE Текущая страница: [[*pagetitle]]`
        &tpl=`@INLINE <p>{{+id}} - {{+pagetitle}}<p>`
    ]]

    @FILE. Вместо чанка из базы данных используется содержимое файла. Путь до файла указывается в систеной настройке pdotools_elements_path.
    Имя файла должно быть с расширением .tpl или .html.

    [[!pdoResources?
        &tpl=`@FILE fileBasedRow.tpl`
    ]]

    @TEMPLATE. Указывается идентификатор или имя шаблона. Если пусто — для каждого ресурса будет использован его собственный шаблон.

    [[!pdoResources?
        &tpl=`@TEMPLATE 10`
    ]]

    @CHUNK. Аналогично простому указанию имени чанка, оставлено для совместимости со сторонними сниппетами.

    [[!pdoResources?
        &tpl=`@CHUNK tpl.Resource.row`
    ]]
    [[!pdoResources?
        &tpl=`tpl.Resource.row`
    ]]

    Подробнее про возможности pdoParser можно прочитать в соответствующем разделе.

    Возвращаемые значения

    pdoTools умеет возвращать данные в разном виде, в зависимости от параметр &return. В основном это используют сами сниппеты для внутренних нужд, но вы можете указывать &return в pdoResources:

    [[!pdoResources?
        &parents=`0`
        &return=`json`
    ]]
    • chunks — оформленные чанки, по умолчанию.
    • sql — подготовленный сырой SQL, полезно для отладки. Сам запрос не выполняется, только выводится на экран.
    • data — готовый массив данных. Из-за особенностей работы сниппетов MODX этот вариант имеет смысл использовать только при вызове pdoFetch::run() напрямую из своего сниппета, в противном случае вы получите только строку «Array».
    • ids — возвращает только идентификаторы документов, через запятую. Удобно для подстановки в качестве параметра другим сниппетам. Параметр &returnIds использует именно этот тип.
    • json — возврат массива данных JSON строкой.
    • serialize — возврат массива данных сериализованной строкой. Иногда, по непонятным причинам, может вызвать нехватку памяти. Лучше использовать json.

    Меню в MODX с помощью компонента pdoMenu — LOCO.RU


    pdoMenu позволяет более гибко указывать параметры, чем Wayfinder. Например, формировать меню сразу из нескольких родителей. Смотрите возможные параметры pdoMenu.


    Устанавливаем пакет PdoTools (Приложения->Установщик).


    Далее вызываем pdoMenu в шаблоне (обычно в чанке header).

    
    [[pdoMenu? &level=`1` &parents=`2`  &outerClass=`nav`]]


    Где:


    • &level=`1` — уровень вложенности (в данном случае вложенности нет)

    • &parents=`2` — id родителя пунктов меню (если нет, то 0)

    • &outerClass=`nav` — добавляем класс к меню (присваивается в ul)


    Если нужно вывести не все ресурсы в меню, а только некоторые, то для этого есть параметр &resources

    
    [[pdoMenu? &level=`1` &resources=`2,3,4,5` &parents=`2`  &outerClass=`nav`]]					
    


    Или если нужно исключить один ресурс:

    
    [[pdoMenu? &level=`1` &resources=`-3` &parents=`2`  &outerClass=`nav`]]				
    


    Можно выводить пункты сразу из нескольких родителей:

    
    [[pdoMenu? &parents=`2,6` &displayStart=`1`]]


     


    Пример организации выпадающего многоуровневого меню в MODX с помощью pdoMenu


    1. html-основа нашего меню будет такая

    
    <div>
        <ul>
            <li><a href='#'><span>Ленты</span></a>
                      <ul>
                         <li><a href='#'><span>Ленты 1</span></a>
                            <ul>
                               <li><a href='#'><span>Ленты 1.1</span></a></li>
                               <li><a href='#'><span>Ленты 1.2</span></a></li>
                            </ul>
                         </li>
                   
                      </ul>
                   </li>
            <li><a href='#'><span>Фетр</span></a>
                            <ul>
                               <li><a href='#'><span>Фетр 1</span></a></li>
                               <li><a href='#'><span>Фетр 2</span></a></li>
                            </ul>
                         </li>
            <li><a href='index.html'><span>Декупаж</span></a></li>
        </ul>
    </div>


     

    Мега меню с PdoMenu / Русскоязычное сообщество MODX

    Всем ДВС!
    Помогите с реализацией мега меню сниппетом pdoMenu. Проблема в том что один из пунктов меню имеет свой шаблон (услуги) с выводом своих потомков в несколько колонок, и у каждого потомка по несколько ресурсов.

    Обыскал все, находил много решений но не одно ни смог реализовать к сожалению, видимо из за недостатка опыта и знаний.

    Пробовал реализовать с помощью параметра &tplCategoryFolder, ни чего не получилось, получается какая то каша.
    Пробовал реализовать с помощью условий создав два tpl шаблона, один с стандартным выпадающим меню, второй шаблон как раз с мега меню, и условием типа

    [[+id:is=`2`:then=`[[$dropdownMenuMega]]`:else=`[[$dropdownMenu]]`]]

    , где 2 это как раз ID пункта меню которое должно выводить мега, а остальные обычное выпадающее, а в самом параметре &tplParentRow указал чанк где прописано данное условие. Короче тоже не получилось.
    Плагин самостоятельно написать не смогу не хватает знаний((((
    Видел статью где данное меню реализовывается с помощью pdoResources, но в данном решение любое выпадающее меню, является мега, поэтому проблем с его реализацией нет!
    У меня же проблема как определить отдельный шаблон для отдельного пункта. Один парень мне предлагал решить проблему двумя вызовами pdoMenu (в теории), но на практике ни чего не получилось.

    Пробовал решить с помощью &tpl_N, но в pdoMenu данный параметр не работает, позже нашел топик с комментариями гуру Modx.))
    Там же почитал что можно реализовать с помощью шаблонизатора Fenom прописав условия, но к сожалению не хватает знаний…
    Вот мое меню

    <nav>
          <ul>
                <li><a href="ссылка">Главная</a></li>
                    <li><a href="#">О компании</a></li>
                    <li><a href="#">Услуги</a>
                   		<div>
                    		<div>
                    			<h5><span></span>Гидравлика</h5>
                    				<ul>
                    					<li><a href="ссылка">Услуга</a></li>
                    					<li><a href="ссылка">Услуга</a></li>
                    				</ul>
                    		</div>
                    		<div>
                    			<h5><span></span>Запчасти</h5>
                    				<ul>
                    					<li><a href="ссылка">Услугаr</a></li>
    							<li><a href="ссылка">Услуга</a></li>
                    				</ul>
                   			 </div>
                   			 <div>
                   				 <h5><span></span>ДВС</h5>
                   					 <ul>
                    					<li><a href="ссылка">Услуга</a></li>
                   						 <li><a href="ссылка">Услуга</a></li>
                       				 </ul>
                    		</div>
                   			 <div>
                    			<h5><span></span>Металлообработка</h5>
                    				<ul>
                    					<li><a href="ссылка">Услуга</a></li>
                    					<li><a href="ссылка">Услуга</a></li>
                    				</ul>
                    		</div>
                    		<div>
                    			<h5><span></span>Масла</h5>
                   					 <ul>
                    					<li><a href="ссылка">Услуга</a></li>
                    					<li><a href="ссылка">Услуга</a></li>
                  					</ul>
                    		</div>
                    	</div>
                    </li>
                    <li><a href="ссылка">Наши работы</a>
                    	<div>
                    		<ul>
                    			<li><a href="ссылка">Гидроцилиндры</a></li>
                    			<li><a href="ссылка">Гидромоторы</a></li>
                    			<li><a href="ссылка">Гидронасосы</a></li>
                    		</ul>
                    	</div>
                    </li>
                    <li><a href="ссылка">Новости</a></li>
                    <li><a href="ссылка">Контакты</a></li> -->
         </ul>
    </nav>

    Вот сайт, где можно наглядно посмотреть как оно выглядит

    Структура сайта следующая:

    Главная
    О компании
    Услуги
    <--!это и есть мега меню-->
    	Подуслуга
    		Подподуслуга
    		Подподуслуга
    	Подуслуга
    		Подподуслуга
    		Подподуслуга
    	Подуслуга
    		Подподуслуга
    		Подподуслуга
    	Подуслуга
    		Подподуслуга
    		Подподуслуга
    	Подуслуга
    		Подподуслуга
    		Подподуслуга
    Портфолио
    <!--это обычное выпадающее меню -->
    	Пример
    	пример
    	пример
    Новости
    Контакты

    Господа может быть найдутся кто сможет подсказать в решении данной задачи, тыкнуть пальцем на какую либо статейку где описаны похожие примеры?
    Сразу скажу что прочитал всю документацию pdoTools и не нашел ни чего полезного
    3 день просто перекапываю гугл и яндекс так же безрезультатно. Где находил схожие проблемы других людей, там не было решения.
    Заранее спасибо!

    pdoMenu / Snippets / pdoTools / docs.modx.pro

    Фрагмент генератора меню. Он может заменить Wayfinder и обеспечивает большую гибкость при указании свойств.

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

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

    Если вы никогда раньше не использовали Wayfinder, будет хорошей идеей прочитать документацию по Wayfinder, поскольку pdoMenu повторно использует многие концепции и настройки Wayfinder.Вы можете найти документы здесь или загрузить отличную (но 184-страничную) электронную книгу Wayfinder из этой ветки.

    Недвижимость

    Имя По умолчанию Описание
    и родители Текущий ресурс Разделенный запятыми список родителей для поиска результатов. Если установлено значение 0, будут использоваться все ресурсы верхнего уровня. Если родительский идентификатор начинается с дефиса, он и его дочерние элементы исключаются из результата.
    и уровень 0 (без ограничений) Уровень (глубина) сформированного меню.
    и ресурсы Список ресурсов, разделенных запятыми, для добавления в результаты. Если идентификатор ресурса начинается с тире, этот ресурс исключается из результатов.
    и шаблоны Разделенный запятыми список шаблонов для фильтрации результатов. Если идентификатор шаблона начинается с тире, ресурсы, использующие его, исключаются из результатов.
    и где Массив дополнительных параметров в формате JSON.
    и displayStart 0 Включить отображение родительского узла. Это полезно, когда вы указываете более одного «родителя».
    и контекст Указание контекста ресурсов для создания меню.
    и показатьСкрытый 0 Показать ресурсы, которые отмечены как скрытые в меню.
    и показать Неопубликованные 0 Показывать всем неопубликованные ресурсы.
    и предварительный просмотр Неопубликованные 0 Показывать неопубликованные ресурсы только для вошедших в систему пользователей Manager с разрешением на просмотр неопубликованных.
    & скрыть Подменю 0 Скрыть неактивные ветви подменю.
    и выберите Список извлекаемых полей, разделенных запятыми.Вы можете указать массив строк JSON, например {«modResource»: «id, pagetitle, content»}. По умолчанию выбраны все поля объекта modResource. Вам не нужна эта опция, если вы хотите использовать такие поля, как [[+ introtext]] , потому что они уже доступны. Эту опцию следует использовать, если вы хотите получать не все поля, а только те, которые вы указали.
    и сортировка menuindex Любое поле ресурса для сортировки, включая опцию TV, задается свойство & includeTVs .Строку JSON можно указать с помощью массива из нескольких полей, например {«tvname»: «ASC», «pagetitle»: «DESC»} . Для случайного выбора сортировки используйте «RAND ()».
    и sortdir ASC Направление сортировки: по возрастанию или по убыванию. Если параметры & sortby и & sortdir будут пустыми, сортировка будет осуществляться в порядке ресурсов в параметре & resources.
    и предел 0 Ограничьте количество результатов.Может быть установлен на «0» без ограничения.
    и офсет 0 Результаты пропускаются с самого начала. Его следует использовать с и пределом
    и проверка разрешений Укажите, какие права пользователя следует проверять при перечислении ресурсов. Если разрешения не указаны, разрешения не будут проверяться вообще. Например, & checkPermissions = `list`
    и кол-во детей 0 Подсчитать количество дочерних элементов каждого родительского ресурса и вывести его в заполнитель [[+ children]] .Он делает дополнительные запросы к базе данных, поэтому по умолчанию 0.
    и комплект Всего 0 Включить вычисление всех строк, что также приведет к установке заполнителя «totalVar».
    и к держателю Если не пусто, фрагмент сохранит свой вывод в заполнитель с тем же именем, вместо того, чтобы возвращать сгенерированное меню.
    & plPrefix wf. Префикс для заполнителей, используемых в фрагментах шаблона
    & showLog 0 Показать детали отладки при обработке сниппета. Отображается только для авторизованных пользователей Manager.
    и быстрый режим 0 Быстрый режим для обработки чанков. Все необработанные теги (модификаторы вывода, фрагменты и т. Д.) Удаляются.
    и кэш 0 Кеширование результатов сниппета.
    и cacheTime 3600 Продолжительность кеширования в секундах.
    и схема -1 (относительно site_url) Как создается URL на основе значений, действительных для API modX :: makeUrl ().
    & useWeblinkUrl 1 Если установлено значение 1, URL-адрес, указанный в ресурсе веб-ссылки, будет выводиться в заполнитель «[[+ ссылка]]» вместо ссылки на сам ресурс веб-ссылки.
    и rowIdPrefix Если установлено, этот параметр создает уникальный идентификатор для каждого элемента. Значение будет rowIdPrefix + docId.
    и здесь ID Определите текущий идентификатор, который будет использоваться для сниппета. Используйте значение [[* id]] , если шаблон, указанный в & tplHere и & tplParentRowActive , не применяется правильно к пункту меню.
    и телевизоры Определите список включенных телевизоров, разделенных запятыми.Например, «действие, время» отобразит заполнители [[+ действие]] и [[+ время]]
    и подготовить телевизоры «1», подготавливает все телевизоры, указанные в , и включает телевизоры Разделенный запятыми список ТВ-значений, зависящих от медиаисточника, которые необходимо подготовить перед выводом.
    и технологические телевизоры Разделенный запятыми список телевизоров, которые следует обрабатывать в соответствии с их параметрами вывода.Если установлено значение «1», будут обрабатываться все ТВ, перечисленные в , и includeTVs .
    & tvPrefix Свойство ТВ префикса.

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

    Эти свойства определяют фрагменты, содержащие шаблоны для форматирования частей сгенерированных меню.

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

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

    Имя Описание
    и tpl Внешний Чанк для обертывания всего блока меню.по умолчанию: @INLINE

    и tpl Чанк для обработки каждого ресурса. Если не указано, содержимое полей ресурса будет выведено на экран. По умолчанию: @INLINE

  • [[+ wrapper]] < / li>
  • & tplParentRow Фрагмент для контейнера с дочерними элементами.
    & tplParentRowHere Чанк для текущего элемента контейнера.
    & tpl Здесь Чанк для текущего ресурса
    и внутренняя Обертка фрагментов для разделов подменю. Если пусто, будет использовать & tplOuter
    и tplInnerRow Фрагмент для строк подменю.
    и tplInnerHere Фрагмент текущего пункта подменю.
    и tplParentRowActive Чанк для активной категории.
    & tpl Категория Папка Специальный блок для ресурсов категории. Ресурсы категории имеют isfolder = 1 и шаблон «(пусто)» или атрибут «rel = category». Полезно для создания пунктов меню верхнего уровня, которые сами по себе не являются активными ссылками.
    и tplStart Чанк для родительского ресурса при условии, что также используются и displayStart .По умолчанию: @INLINE

    [[+ menutitle]]

    [[+ wrapper]]

    Свойства для классов CSS

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

    Имя Описание
    и первый класс Класс для первого пункта меню. По умолчанию: первый
    и lastClass Класс для последнего пункта меню.По умолчанию: последняя
    и здесь Класс Класс для активного пункта меню и его родителей. По умолчанию: активно
    и parentClass Класс для родительских элементов.
    и rowClass Класс для каждой строки меню.
    и внешний класс Класс внешней обертки.
    и внутренний класс Класс для внутренней оболочки подменю.
    и levelClass Класс для каждого уровня меню. Например, если вы укажете «уровень», будет получен «уровень1», «уровень2» и т. Д.
    и selfClass Класс для текущего документа в меню.
    и webLinkClass Класс для ресурсов веб-ссылок.

    Примеры

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

      [[pdoMenu?
        & родители = `0`
        & level = `1`
    ]]  

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

      [[pdoMenu?
        & родители = `-10, -15`
        & level = `2`
        & checkPermissions = `загрузка, список, просмотр`
    ]]  

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

      [[pdoMenu?
        & родители = `10,15`
        & displayStart = `1`
    ]]  

    Перечислить все ресурсы за один шаг:

      [[pdoMenu?
        & родители = `0`
        & level = `2`
        & tplInner = `@ INLINE [[+ оболочка]]`
        & tplParentRow = `@ INLINE 
  • Ой, страница не найдена. | Документы MODX

    Ой, вы попали на страницу, которой не существует.

    Возможно, он потерялся на новой платформе документации или был удален, потому что больше не актуален. Это также может быть действительно старая ссылка из двух (или более) систем документации назад, которая не является частью текущих автоматических перенаправлений 2000+.

    На основании вашего запроса это может быть то, что вы ищете:

    • Оценка: 180 /100

      • Нечеткое совпадение
        экстра с грузом 11.25
      • Нечеткое совпадение
        фрагмент с весом 6
      • Нечеткое совпадение
        фрагмент с весом 13,5
      • Нечеткое совпадение
        экстра с массой 10.5
      • Точное совпадение на
        экстры с весом 4
      • Нечеткое совпадение
        фрагмент с весом 2,25
      • Нечеткое совпадение
        ядро ​​/ модель / modx с весом 0.75
      • Точное совпадение на
        сниппетов с весом 20
      • Нечеткое совпадение
        сниппетов [1] = с весом 0,75
      • Нечеткое совпадение
        фрагменты [1] с весом 1.5
      • Нечеткое совпадение
        в настоящее время с массой 0,75
      • Нечеткое совпадение
        снаружи с массой 0,75

      Общий вес 72 (= 72/40 * 100 = 180 )

      1. Разработка дополнительного

      Разработка дополнения, часть III

      Это руководство является частью серии:

      Часть I. Начало работы и создание фрагмента рисунков

      Часть II: Создание нашей пользовательской страницы менеджера

      Часть III: Упаковка наших дополнительных услуг

      Обзор
      В этом уроке мы собираемся упаковать созданный нами Extra…

    • Оценка: 178 /100

      • Точное совпадение на
        сниппетов с весом 15
      • Нечеткое совпадение
        фрагмент с весом 9
      • Точное совпадение на
        сниппеты с весом 16
      • Точное совпадение на
        сниппеты с весом 12
      • Нечеткое совпадение
        фрагмент с весом 15
      • Нечеткое совпадение
        фрагмент с весом 3
      • Нечеткое совпадение
        внешне с массой 0.75
      • Нечеткое совпадение
        сниппет! с массой 0,75

      Общий вес 71,5 (= оценка 71,5 / 40 * 100 = 178 )

      1. Расширение MODX

      Написание фрагментов

      Обзор
      Фрагменты — это метод, с помощью которого MODX позволяет запускать динамический PHP-код на любой из ваших страниц.Они являются основным средством разработки для большинства разработчиков.
      Что такое сниппет?
      Согласно одному определению, «фрагмент» — это «короткий кусок многоразового использования …

    • Оценка: 157 /100

      • Точное совпадение на
        pdotools с весом 15
      • Точное совпадение на
        сниппеты с весом 4
      • Точное совпадение на
        подменю с массой 4
      • Точное совпадение на
        экстры с весом 2
      • Нечеткое совпадение
        pdotools! с массой 0.75
      • Точное совпадение на
        pdotools с весом 11
      • Точное совпадение на
        сниппеты с весом 14
      • Нечеткое совпадение
        сниппет с весом 7.5
      • Точное совпадение на
        подменю с массой 1
      • Нечеткое совпадение
        [[! Pdomenu с массой 0,75
      • Точное совпадение на
        текущий с массой 3

      Общий вес 63 (= 63/40 * 100 = 157 )

      1. Дополнения MODX

      pdoИнструменты

      После создания новой установки MODX следующим шагом часто является установка ряда дополнительных компонентов для добавления функциональности сайту.Обычный набор всем известен:

      getResources для списка ваших документов

      getPage для разбивки ваших списков на страницы

      Навигатор для сборки …

    • Оценка: 153 /100

      • Точное совпадение на
        экстры с массой 15
      • Точное совпадение на
        экстры с весом 12
      • Точное совпадение на
        экстры с массой 20
      • Точное совпадение на
        en с весом 1
      • Нечеткое совпадение
        доп.io с массой 1,5
      • Нечеткое совпадение
        экстра с грузом 6,75
      • Точное совпадение на
        pdotools с весом 1
      • Точное совпадение на
        сниппеты с весом 2
      • Точное совпадение на
        подменю с массой 1
      • Точное совпадение на
        ток с массой 1

      Общий вес 61.25 (= 61,25 / 40 * 100 = 153 )

        MODX Дополнительно

        В этом разделе документации вы найдете информацию о дополнениях для MODX Revolution. Эти дополнения (и их документация) созданы сторонними разработчиками, поэтому официально не поддерживаются.
        Где найти Extras
        Официальный источник ext …

      1. Оценка: 153 /100

        • Точное совпадение на
          экстры с массой 15
        • Точное совпадение на
          экстры с весом 12
        • Точное совпадение на
          экстры с массой 20
        • Точное совпадение на
          en с весом 1
        • Нечеткое совпадение
          доп.io с массой 1,5
        • Нечеткое совпадение
          экстра с грузом 6,75
        • Точное совпадение на
          pdotools с весом 1
        • Точное совпадение на
          сниппеты с весом 2
        • Точное совпадение на
          подменю с массой 1
        • Точное совпадение на
          ток с массой 1

        Общий вес 61.25 (= 61,25 / 40 * 100 = 153 )

        1. Дополнения MODX

        MODX Дополнительно

        В этом разделе документации вы найдете информацию о дополнениях для MODX Revolution. Эти дополнения (и их документация) созданы сторонними разработчиками, поэтому официально не поддерживаются.
        Где найти Extras
        Официальный источник доп…

    • Дополнительные результаты по запросу «current en extras pdotools snippets pdomenu»

    .

  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *