Общие параметры
Общие параметры pdoTools
Оглавление
Общие параметры для сниппетов, основанных на 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 |
Список фильтров по ТВ, с разделителями Обратите внимание: фильтрация использует оператор 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 | Список 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'
])}
- chunks — оформленные чанки, по умолчанию.
- sql — подготовленный сырой SQL, полезно для отладки. Сам запрос не выполняется, только выводится на экран.
- data — готовый массив данных. Из-за особенностей работы сниппетов MODx этот вариант имеет смысл использовать только при вызове
pdoFetch::run()напрямую из своего сниппета, в противном случае вы получите только строку «Array». - ids — возвращает только идентификаторы документов, через запятую. Удобно для подстановки в качестве параметра другим сниппетам. Параметр &returnIds использует именно этот тип.
- json — возврат массива данных JSON строкой.
- serialize — возврат массива данных сериализованной строкой. Иногда, по непонятным причинам, может вызвать нехватку памяти. Лучше использовать json.
Время запросов: 0,1580 s
Количество запросов: 24
Источник: cache