Modx revo pdomenu параметры: pdoMenu / Сниппеты / pdoTools / docs.modx.pro
pdoMenu / Сниппеты / pdoTools / docs.modx.pro
Сниппет генерации меню. Может заменять Wayfinder, и позволяет более гибко указывать параметры.
Например, умеет строить меню сразу из нескольких родителей, отображая их как вместе, так и отдельными ветками.
Существенный прирост скорости дает только при первом запуске, дальше Wayfinder не особо уступает, благодаря грамотному кэшированию.
Параметры
По умолчанию pdoMenu принимает общие параметры pdoTools и некоторые свои:
Название | По умолчанию | Описание |
---|---|---|
&parents | Текущий ресурс | Список родителей для поиска результатов, через запятую. Если поставить &parents=`0` — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки. |
&level | 0 (не ограниченно) | Уровень генерируемого меню. |
&resources | Список ресурсов для вывода в результатах, через запятую. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
&templates | Список шаблонов для фильтрации результатов, через запятую. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки. | |
&where | Массив дополнительных параметров выборки, закодированный в JSON. | |
&displayStart | 0 | Включить показ начальных узлов меню. Полезно при указании более одного «parents». |
&context | Ограничение выборки по контексту ресурсов. | |
&showHidden | 0 | Показывать ресурсы, скрытые в меню. |
&showUnpublished | 0 | Показывать неопубликованные ресурсы. |
&previewUnpublished | 0 | Включить показ неопубликованных ресурсов, если у пользователя есть на это разрешение. |
&hideSubMenus | 0 | Спрятать неактивные ветки меню. |
&select | Список полей для выборки, через запятую. Можно указывать JSON-строку с массивом, например &select=`{«modResource»:»id,pagetitle,content»}` | |
&sortby | menuindex | Любое поле ресурса для сортировки, включая ТВ-параметр, если он указан в параметре &includeTVs, например &sortby=`{«tvname»:»ASC»,»pagetitle»:»DESC»}`. Можно указывать JSON-строку с массивом нескольких полей. Для случайной сортировки укажите &sortby=`RAND()` |
&sortdir | ASC | Направление сортировки: по убыванию или по возрастанию. Если оставить параметры &sortby и &sortdir пустыми, то сортировка будет идти по порядку ресурсов в &resources. |
&limit | 0 | Ограничение количества результатов выборки. |
&offset | 0 | Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit |
&checkPermissions | Укажите, какие разрешения нужно проверять у пользователя при выводе ресурсов, например &checkPermissions=`list`. | |
&countChildren | 0 | Точный подсчет количества дочерних ресурсов каждой категории и вывод их в плейсхолдер [[+children]] . Делает дополнительные запросы в БД, поэтому по умолчанию отключен. |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем вместо вывода на экран. | |
&plPrefix | wf. | Префикс для выставляемых плейсхолдеров. |
&showLog | 0 | Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекcте «mgr». |
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны. |
&cache | 0 | Кэширование результатов работы сниппета. |
&cacheTime | 3600 | Время актуальности кэша, в секундах. |
&scheme | -1 | Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции. |
&useWeblinkUrl | 1 | Генерировать ссылку с учетом класса ресурса. |
&rowIdPrefix | Префикс для выставления идентификатора в чанк. | |
&hereId | id текущего ресурса для генерируемого меню. Нужно указывать только если скрипт сам его неверно определяет, например при выводе меню из чанка другого сниппета. | |
&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
|
&resources
|
pdoMenu. Если значение не пусто, то в меню будут выведены только указанные ID ресурсов. Указываются через запятую. Если ID ресурса начинается с дефиса, то он исключается из выборки.
Wayfinder. За выборку определённых ресурсов отвечает параметр &includeDocs, за исключение — &excludeDocs.
|
&cacheResults
|
&cache=`0`
|
Кэшировать ли результаты сниппета. 0 — не кэшировать, 1 — кэшировать.
|
&cacheTime=`3600`
|
&cacheTime=`3600`
|
Время хранения кэша, если включено кэширование результатов работы сниппета.
|
&contexts
|
&context
|
Если не пусто, то выборка ограничивается по заданному контексту.
|
&scheme=`-1`
|
&scheme=`-1`
|
Схема формирования URL:
|
&sortBy
|
&sortby=`menuindex`
|
Поле, по которому будет производиться сортировка.
|
&where
|
&where
|
JSON строка, в которой задаются параметры для выборки данных. Например: &where=`[{«class_key:!=»: «msCategory»}]` То есть, не выводить те ресурсы, которые являются категориями Minishop.
|
&hereId
|
&hereId
|
ID итерируемого (который обрабатывается именно сейчас) документа. Используется в тех случаях, когда сам сниппет по каким-то причинам определяет его неправильно.
|
&hereTpl
|
&tplHere
|
Чанк текущего (активного) документа.
|
Параметры шаблонов
Wayfinder (значение по умолчанию) | pdoMenu (значение по умолчанию) | Применение |
---|---|---|
&outerTpl
|
&tplOuter=`@INLINE <ul[[+classes]]>[[+wrapper]]</ul>`
|
Чанк-обёртка всех пунктов меню.
|
&rowTpl
|
&tpl=`@INLINE <li[[+classes]]><a href=»[[+link]]» [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li>`
|
Чанк оформления пункта меню.
|
&startItemTpl
|
&tplStart=`@INLINE <h3[[+classes]]>[[+menutitle]]</h3>[[+wrapper]]`
|
Чанк оформления корневого пункта меню, при условии что активирован параметр displayStart.
|
&parentRowHereTpl
|
&tplParentRowHere
|
Чанк оформления текущего ресурса, при условии что он содержит дочерние ресурсы.
|
&parentRowTpl
|
&tplParentRow
|
Чанк оформления ресурса-контейнера с потомками.
|
&hereTpl
|
&tplHere
|
Чанк текущего (активного) документа.
|
&innerTpl
|
&tplInner
|
Чанк внутренней обёртки, которая используется при выводе подменю. Удобно, когда внутреннему ul мы хотим задать какой-то иной класс.
|
&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 родителя начинается с дефиса, он и его потомки исключаются из выборки. |
&level | 0 (не ограниченно) | Уровень генерируемого меню. |
&resources | Список ресурсов для вывода в результатах, через запятую. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
&templates | Список шаблонов для фильтрации результатов, через запятую. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки. | |
&where | Массив дополнительных параметров выборки, закодированный в JSON. | |
&displayStart | 0 | Включить показ начальных узлов меню. Полезно при указании более одного «parents». |
&context | Ограничение выборки по контексту ресурсов. | |
&showHidden | 0 | Показывать ресурсы, скрытые в меню. |
&showUnpublished | 0 | Показывать неопубликованные ресурсы. |
&previewUnpublished | 0 | Включить показ неопубликованных ресурсов, если у пользователя есть на это разрешение. |
&hideSubMenus | 0 | Спрятать неактивные ветки меню. |
&select | Список полей для выборки, через запятую. Можно указывать JSON-строку с массивом, например &select=`{«modResource»:»id,pagetitle,content»}` | |
&sortby | menuindex | Любое поле ресурса для сортировки, включая ТВ-параметр, если он указан в параметре &includeTVs, например &sortby=`{«tvname»:»ASC»,»pagetitle»:»DESC»}`. Можно указывать JSON-строку с массивом нескольких полей. Для случайной сортировки укажите &sortby=`RAND()` |
&sortdir | ASC | Направление сортировки: по убыванию или по возрастанию. Если оставить параметры &sortby и &sortdir пустыми, то сортировка будет идти по порядку ресурсов в &resources. |
&limit | 0 | Ограничение количества результатов выборки. |
&offset | 0 | Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit. |
&checkPermissions | Укажите, какие разрешения нужно проверять у пользователя при выводе ресурсов, например &checkPermissions=`list`. | |
&countChildren | 0 | Точный подсчет количества дочерних ресурсов каждой категории и вывод их в плейсхолдер [[+children]] . Делает дополнительные запросы в БД, поэтому по умолчанию отключен. |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем вместо вывода на экран. | |
&plPrefix | wf. | Префикс для выставляемых плейсхолдеров. |
&showLog | 0 | Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекcте «mgr». |
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны. |
&cache | 0 | Кэширование результатов работы сниппета. |
&cacheTime | 3600 | Время актуальности кэша, в секундах. |
&scheme | -1 | Схема формирования url, передаётся в modX::makeUrl() , поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции. |
&useWeblinkUrl | 1 | Генерировать ссылку с учетом класса ресурса. |
&rowIdPrefix | Префикс для выставления идентификатора в чанк. | |
&hereId | id текущего ресурса для генерируемого меню. Нужно указывать только если скрипт сам его неверно определяет, например при выводе меню из чанка другого сниппета. | |
&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]]
.
Название | По умолчанию | Описание |
&firstClass | first | Класс для первого пункта меню. |
&lastClass | last | Класс последнего пункта меню. |
&hereClass | active | Класс для активного пункта меню. |
&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.
Параметры выборки ресурсов
Эти параметры определяют, какие объекты будут получены.
Название | По умолчанию | Описание |
---|---|---|
&class | modResource | Класс получаемого объекта |
&parents | Текущий ресурс | Список родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки. |
&depth | 10 | Глубина поиска дочерних ресурсов от родителя. |
&resources | Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
&templates | Список шаблонов, через запятую, для фильтрации результатов. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки. | |
&context | Ограничение выборки по контексту ресурсов. | |
&where | Массив дополнительных параметров выборки, закодированный в JSON. | |
&showHidden | 0 | Показывать ресурсы, скрытые в меню. |
&showUnpublished | 0 | Показывать неопубликованные ресурсы. |
&showDeleted | 0 | Показывать удалённые ресурсы. |
&hideContainers | 0 | Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1». |
&hideUnsearchable | Отключает вывод спрятанных от поиска ресурсов. | |
&select | Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {«modResource»:»id,pagetitle,content»}. | |
&leftJoin | Аналог SQL оператора left join | |
&rightJoin | Аналог SQL оператора right join | |
&innerJoin | Аналог SQL оператора inner join | |
&joinSequence | innerJoin,leftJoin,rightJoin | Порядок подключения таблиц, через зяпятую. |
&sortby | pagetitle | Любое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей. Для случайно сортировки укажите «RAND()» |
&sortdir | ASC | Направление сортировки: по убыванию или возрастанию. |
&groupby | Указывает поле, по которому группируются результаты | |
&having | Используется, чтобы ограничить выборку сгруппированных строк с помощью условия, относящегося ко всей группе, заданной в &groupby | |
&limit | 0 | Ограничение количества результатов выборки. Можно использовать «0». |
&offset | 0 | Пропуск результатов от начала. |
&first | 1 | Номер первой итерации вывода результатов. |
&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. |
&conditionalTpls | JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей. |
&outputSeparator | Необязательная строка для разделения результатов работы. |
Параметры результатов
Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.
Название | По умолчанию | Описание |
---|---|---|
&return | chunks | Определяет способ вывода результатов. См. ниже. |
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны. |
&nestedChunkPrefix | pdotools_ | Префикс для «быстрых плейсхолдеров», включаемых параметром &fastMode |
&idx | Вы можете указать стартовый номер итерации вывода результатов. | |
&totalVar | total | Имя плейсхолдера для сохранения общего количества результатов. |
&includeContent | 0 | Включаем поле «content» в выборку. |
&includeTVs | Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]] . | |
&includeTVList | Псевдоним &includeTVs | |
&prepareTVs | 1 | Список ТВ параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить в «1», будут подготовлены все ТВ, указанные в &includeTVs. |
&processTVs | Список ТВ параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs. Замедляет работу. | |
&tvPrefix | tv. у pdoResources и пусто у других сниппетов | Префикс для ТВ параметров. |
&prepareSnippet | 1 | Указывает сниппет, который принимает данные перед выводом в чанк и может их менять или добавлять |
&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 |
& tplParentRow | Фрагмент для контейнера с дочерними элементами. |
& tplParentRowHere | Чанк для текущего элемента контейнера. |
& tpl Здесь | Чанк для текущего ресурса |
и внутренняя | Обертка фрагментов для разделов подменю. Если пусто, будет использовать & tplOuter |
и tplInnerRow | Фрагмент для строк подменю. |
и tplInnerHere | Фрагмент текущего пункта подменю. |
и tplParentRowActive | Чанк для активной категории. |
& tpl Категория Папка | Специальный блок для ресурсов категории. Ресурсы категории имеют isfolder = 1 и шаблон «(пусто)» или атрибут «rel = category». Полезно для создания пунктов меню верхнего уровня, которые сами по себе не являются активными ссылками. |
и tplStart | Чанк для родительского ресурса при условии, что также используются и displayStart .По умолчанию: @INLINE |
Свойства для классов 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
)
Разработка дополнительного
Разработка дополнения, часть III
Это руководство является частью серии:
Часть I. Начало работы и создание фрагмента рисунков
Часть II: Создание нашей пользовательской страницы менеджера
Часть III: Упаковка наших дополнительных услуг
Обзор
В этом уроке мы собираемся упаковать созданный нами Extra…
- Оценка: 178 /100
- Точное совпадение на
сниппетов
с весом 15
- Нечеткое совпадение
фрагмент
с весом 9
- Точное совпадение на
сниппеты
с весом 16
- Точное совпадение на
сниппеты
с весом 12
- Нечеткое совпадение
фрагмент
с весом 15
- Нечеткое совпадение
фрагмент
с весом 3
- Нечеткое совпадение
внешне
с массой 0.75
- Нечеткое совпадение
сниппет!
с массой 0,75
Общий вес 71,5
(= оценка 71,5 / 40 * 100 = 178
)
Расширение 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
)
Дополнения 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 …
- Оценка: 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 Дополнительно
В этом разделе документации вы найдете информацию о дополнениях для MODX Revolution. Эти дополнения (и их документация) созданы сторонними разработчиками, поэтому официально не поддерживаются.
Где найти Extras
Официальный источник доп…
Дополнительные результаты по запросу «current en extras pdotools snippets pdomenu»
.