Оглавление

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

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

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

Название По умолчанию Описание
&class modResource Класс получаемого объекта.
&parents Текущий ресурс Список родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
&resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
&templates Список шаблонов, через запятую, для фильтрации результатов. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки.
&depth 10 Глубина поиска дочерних ресурсов от родителя.
&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 Указывает поле, по которому группируются результаты
&limit 0 Ограничение количества результатов выборки. Можно использовать «0».
&offset 0 Пропуск результатов от начала.
&first 1 Номер первой итерации вывода результатов.
&last Автоматически, по формуле (total + first — 1) Номер последней итерации вывода результатов.
&loadModels Список компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery, msearch2`.
&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 Тип сортировки по ТВ параметру. Возможные варианты: stringintegerdecimal и 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 Список TV параметров для выборки, через запятую. Например: «action, time» дадут плейсхолдеры [[+action]] и [[+time]].
&includeTVList Псевдоним &includeTVs.
&prepareTVs 1 Список TV параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить в «1», будут подготовлены все TV, указанные в &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. В качестве шаблона будет использован код после этого префикса.

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

/* pdoParser */
{$_modx->runSnippet('!pdoResources', [
'parents' => 0,
'tpl' => '@INLINE <li>{{+pagetitle}}</li>'
])}

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

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

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

/* pdoParser */
{$_modx->runSnippet('!pdoResources', [
'parents' => 0,
'tplFirst' => '@INLINE Текущая страница: [[*pagetitle]]'
'tpl' => '@INLINE <p>{{+id}} - {{+pagetitle}}<p>'
])}

@FILE

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

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

/* pdoParser */
{$_modx->runSnippet('!pdoResources', [
'tpl' => '@FILE fileBasedRow.tpl'
])}

@TEMPLATE

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

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

/* pdoParser */
{$_modx->runSnippet('!pdoResources', [
'tpl' => '@TEMPLATE 10'
])}

@CHUNK

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

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

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

/* pdoParser */
{$_modx->runSnippet('!pdoResources', [
'tpl' => '@CHUNK tpl.Resource.row'
])}

{$_modx->runSnippet('!pdoResources', [
'tpl' => 'tpl.Resource.row'
])}

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

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

/* modParser */
[[!pdoResources?
    &parents=`0`
    &return=`json`
]]

/* pdoParser */
{$_modx->runSnippet('!pdoResources', [
'parents' => 0,
'return' => 'json'
])}