Дата публикации
19 Августа 2019
Дата изменения
5 Июля 2020
Уникальных просмотров
609

Оглавление

Общие параметры для сниппетов, основанных на 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'
])}

Благодарность автору

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

Один из самых популярных способов поблагодарить автора, воспользоваться сервисом Яндекс.Деньги.

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