- totalVar в pdoResources
- Комментарии: 8
- [pdoTools] 2.11.0 — отключение выборки total по умолчанию
- pdoResources не выводит tv и дату
- Комментарии: 10
- Не работает пагинация
- Комментарии (6)
- MODX. Вывод списка ресурсов на сайте с использованием pdoResources
- Использование pdoResources
- Возможные ошибки
- Примеры
- Документация сниппета pdoResources
- pdoResources
- pdoResources
- Параметры
- Параметры выборки ресурсов
- Параметры шаблонов
- Параметры результатов
- Примеры
- Дополнительная информация
- Общие параметры для пакета pdoTools
- Общие параметры
- Общие параметры
- Параметры выборки ресурсов
- Параметры шаблонов
- Параметры результатов
- Способы вызова чанков
- Возвращаемые значения
totalVar в pdoResources
Кто-нибудь сталкивался со странной работой pdoReources? Абсолютно идентичные коды, но в totalVar в первом запросе нормальный результат, в следующем — ноль.
Уже всё перепробовал, и названия фильтров поменять и всё, но нет.
Комментарии: 8
Думаю, тут проблема в использовании tvFilters.
pdoTools работает с реальными данными в таблице, а значения по умолчанию от ТВ туда не пишутся.
Из-за лютых тормозов потом пришлось изменить логику работы этого параметра. Хотя, скорость волнует не всех разработчиков.
Правильно ли я понимаю, что с pdoResources это возможно будет только, если все значения будут введёнными?
То значение фильтра делается выпадающим списком. Получается, если добавить в выпадающий список, какую-нибудь заглушку, чтобы она вставала «по умолчанию», то всё получится.
Как бы то ни было, я заметил, что ни теги, ни даты pdoResources также не выводит, в отличие от getResources. Может, есть какие-нибудь костыли?
Да всё он выводит, нужно просто разобраться, что и в каком виде хранится в БД, а не тупо копировать чанки от getResources.
В параметре &where можно проверять ТВ на null.
Я же говорю, ТВ заносится через селектор A||B||C, где B — значение по умолчанию. Получается, ресурсы, в которых выбрано А (по схеме из первого сообщения), считаются, а ресурсы, которые созданы и в которых не изменён ТВ и по умолчанию выставился В, в базу не занесён и не выводится. ОК, этот момент, допустим, прояснён, я проверю его.
Но другие поля ТВ, например, дата или теги, также не выводятся, к сожалению, в результате чего, например, после перехода на pdo перестал работать скрипт фильтрации, который брал данные, выводящиеся в теги data-* из ТВ. Хорошо, заметил 🙂
Источник
[pdoTools] 2.11.0 — отключение выборки total по умолчанию
Для начала, немного теории. Все сниппеты pdoTools используют класс pdoFetch для работы с базой данный. Во время этого происходит выборка данных с подсчётом количества результатов и выставлением плейхолдера [[+total]] . Для максимальной точности, делается это, используя встроенные функции MySQL. Перед выборкой добавляется такая функция:
И MySQL знает, что нужно считать потенциально выбираемые результаты.
А после выборки делается отдельный запрос для получения результата и выставления плейхолдера
Так вот, этот плейхолдер нужен исключительно для постраничной навигации и вывода количества в showLog , но его выборка может занимать весьма продолжительное время. Так что, в новой версии добавлена опция setTotal прямо в класс pdoFetch, и она отключена по умолчанию.
То есть, теперь все выборки pdoTools не делают эту ненужную работу. Но, так как плейхолдер [[+total]] необходим для постраничной навигации, сниппет pdoPage включает его всегда. При вызове любого сниппета через pdoPage, этот плейхолдер будет выставлен.
Я очень надеюсь, что вы не заметите никаких проблем при обновлении сайта, но теоретически они могут быть, если этот плейсхолдер вам нужен не для пагинации, а для чего-то еще.
Если так, то просто включите его:
modx.pro уже работает на новой версии, никаких проблем не обнаружено.
Думаю, ускорение работы pdoMenu, pdoCrumbs, pdoNeighbors и других сниппетов стоит этого. Обновляемся, тестируем, и как обычно, пишем отзывы.
Источник
pdoResources не выводит tv и дату
Комментарии: 10
И не выведет, потому как в условии нет вызова TV, а вместо этого 2 раза вызывается includeContent=`1`.
&includeTVs=`1` не равняется вызову нужных ТВишек. Должно быть &includeTVs=`newImage, и тд`.
И надеюсь все это не в одном ресурсе/чанке? Ибо &tpl=`newsBlockTpl` говорит pdoResources отправить все именно в этот шаблон, а не в текущий ресурс/чанк.
Что-то сумбурно написал, простите я из гостей вернулся 🙂
PS: И вообще, читайте доки
Всех с широкой масленницей 🙂
Да в доках вообще ничего не написано, особенно, если их не читать.
Открываем ссылку, смотрим описание &includeTVs:
Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+tv.action]] и [[+tv.time]].
Список ТВ, а не цифра 1.
Я не знаю, что поменялось, но неожиданно все начало само по себе работать.
Конечно, заменил &includeTVs=`1` на &includeTVs=`newsImage` и всё начало само по себе работать. Мистика!
Тоже самое и с вот этим
Сможешь ответить на вопрос, зачем здесь strtotime? Уверен, не сможешь, потому что так просто принято в getResources.
Фокус в том, что даты ресурсов в MODX и так хранятся в виде timestamp, и дополнительно преобразовывать их не нужно.
При работе через getResources этот timestamp сначала переводится в дату, потому что так задано в объекте modResource, а потом через фильтр в чанке обратно в timestamp. То есть, двойная бесполезная работа, которую pdoResources не делает.
А вот теперь самое интересное — наша документация открыта для редактирования, ты можешь всю эту информацию оформить как тебе удобно и добавить.
Только мало кто что-то добавляет, все только ноют, что «в доках вообще мало чего написано».
Извините, однотипные вопросы и нытьё надоело.
Источник
Не работает пагинация
Комментарии (6)
А со стандартными шаблонами работает?
Если нет, то проверьте, есть ли на странице еще вызов pdoPage.
В этом случае добавьте параметр: и тогда страницы выводите:
Также бывает не лишним изменить [[+total]] параметром
Так, что-то я совсем запутался.
Со стандартным шаблоном такая же ситуация (не работает как надо).
В [[!pdoPage?… добавил &pageNavVar=`prod`
На странице пытаюсь вывести [[!+prod.nav]]. В итоге вообще ничего не выводится.
По последнему (изменить total) вообще не понял, это где менять надо?
Параметр pageNavVar служит для того, чтобы развести несколько вызовов pdoPage на странице (документация). Иначе по клику на ссылке будут листаться все.
Параметр totalVar задает плейсхолдер для сохранения общего количества результатов. Дело в том, что практически все сниппеты (pdoResources, getImageList, getProducts, pdoMenu и т. д.) выводят это кол-во в переменную total. Бывает (сталкивался пару раз), что пагинация глючит из-за того, что какой-то сниппет считывает этот total и на основе него делает вывод, а total-то не его)).
Поэтому и рекомендовал добавить в вызов этот параметр с любым уникальным значением (хотя сам pdoPage пишет по умолчанию в page.total, но мало ли).
Чтобы совсем обособить данный вызов, можно ещё пененазначить переменную в запросе через &pageVarKey.
Если собрать все вышесказанное, то сделайте так:
Если и это не поможет, надо смотреть сайт.
PS на всякий случай.
В HEAD base прописан?
Источник
MODX. Вывод списка ресурсов на сайте с использованием pdoResources
Отредактировано: 16 Октября 2019
pdoResources — это улучшенная версия getResource, сниппета для вывода ресурсов (страниц) сайта на MODX Revolution.
Для перехода с getResources на pdoResources в большинстве случаев достаточно просто поменять префикс get на pdo в вызове.
Использование pdoResources
Для вывода списка ресурсов на сайте достаточно вызвать сниппет
- parent — ID ресурса с которого отсчитывать вывод ресурсов;
- tpl — это шаблон ресурса;
Параметр parent можно указывать следующими путями:
- parent=`1` — непосредственно номер ресурса;
- parent=`[[*id]]` — id текущего ресурса;
В качестве шаблона можно указать чанк, или использовать инлайновую запись
Для добавления дополнительных полей к результату вывода надо прописать названия полей в параметр &includeTVs. А некоторые типы полей, например изображения, после подключения надо подготовить (отрендерить) с помощью параметра &processTVs
Если надо отфильтровать по какому-либо параметру
Для более сложной фильтрации можно использовать параметр &where.
Если надо использовать разные шаблоны в зависимости от условия
Вывод ресурсов где каждые N имеют свою обертку (параметр &tpl_nN не совместим с &offset)
Вызов xPDO с параметрами
Возможные ошибки
Все заполнено правильно, но вместо ресурсов отображается массив. Ищите проблему в вызове
- неправильные кавычки?
- не существующий чанк с шаблоном?
- строковый шаблон без @INLINE?
Примеры
Вывод ресурсов не являющихся папкой
Документация сниппета pdoResources
pdoResources
pdoResources
Сниппет предназначен для вывода списка ресурсов. Является продвинутой заменой для getResources: обладает всеми его возможностями, но лишен недостатков.
Умеет правильно сортировать ТВ параметры, присоединять таблицы при выборке, включать и исключать категории из разных контекстов и еще много чего.
Параметры
Параметры выборки ресурсов
Эти параметры определяют, какие ресурсы появятся в генерируемом списке.
| Название | По умолчанию | Описание |
|---|---|---|
| &parents | Текущий ресурс | Список родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки. |
| &depth | 10 | Глубина поиска дочерних ресурсов от родителя. |
| &resources | Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
| &context | Ограничение выборки по контексту ресурсов. | |
| &where | Массив дополнительных параметров выборки, закодированный в JSON. | |
| &showHidden | 1 | Показывать ресурсы, скрытые в меню. |
| &showUnpublished | 0 | Показывать неопубликованные ресурсы. |
| &showDeleted | 0 | Показывать удалённые ресурсы. |
| &hideContainers | 0 | Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1». |
| &select | 0 | Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например . |
| &sortby | pagetitle | Любое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей, например . Для случайно сортировки укажите «RAND()» |
| &sortdir | DESC | Направление сортировки: по убыванию или возрастанию. |
| &setTotal | 0 | Отключение выборки total по умолчанию (с версии 2.11.0). Сниппет pdoPage включает его всегда. |
| &limit | 10 | Ограничение количества результатов выборки. Можно использовать «0». |
| &offset | 0 | Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit |
| &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. |
Параметры шаблонов
Эти параметры устанавливают чанки, которые содержат шаблоны для генерации вывода, то есть отвечают за внешний вид.
| Название | Описание |
|---|---|
| &returnIds | Установите значение «1», чтобы вернуть строку со списком id ресурсов, вместо оформленных результатов. Все указанные шаблоны игнорируются. |
| &tpl | Имя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран. |
| &tplFirst | Имя чанка для первого ресурса в результатах. |
| &tplLast | Имя чанка для последнего ресурса в результатах. |
| &tplOdd | Имя чанка для каждого второго ресурса (хоть «odd» значит «нечётный», работает для чётных ресурсов). |
| &tplWrapper | Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]] . Не работает вместе с параметром &toSeparatePlaceholders. |
| &wrapIfEmpty | Включает вывод чанка-обертки &tplWrapper даже если результатов нет. |
| &tplCondition | Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls. |
| &tplOperator | Необязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls. |
| &conditionalTpls | JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей. |
| &outputSeparator | Необязательная строка для разделения результатов работы. |
Параметры результатов
Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.
| Название | По умолчанию | Описание |
|---|---|---|
| &fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны. |
| &idx | Вы можете указать стартовый номер итерации вывода результатов. | |
| &totalVar | total | Имя плейсхолдера для сохранения общего количества результатов. Параметр setTotal должен быть включен. |
| &includeContent | 0 | Включаем поле «content» в выборку. |
| &includeTVs | Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+tv.action]] и [[+tv.time]] . | |
| &prepareTVs | «1», что означает подготовку всех ТВ, указанных в &includeTVs | Список ТВ параметров, которые нужно подготовить перед выводом. |
| &processTVs | Список ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs. | |
| &tvPrefix | tv. | Префикс для ТВ параметров. |
| &useWeblinkUrl | Генерировать ссылку с учетом класса ресурса, включает плейсхолдер [[+link]] . | |
| &toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран. | |
| &toSeparatePlaceholders | Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]] , [[+myPl1]] и т.д. | |
| &showLog | 0 | Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr». |
Примеры
Простейший вывод списка дочерних ресурсов документа с идентификатором 1:
Если используется дополнительное поле image, то вызов изменится следующим образом:
В чанке ListRowTpl за это поле будет отвечать плейсхолдер [[+tv.image]]
Дополнительная информация
При переносе чанков с getResources, довольно распространённой ошибкой является использование модификатора strtotime, для форматирования даты.
Дело в том, что даты ресурсов и так хранятся в виде timestamp, но конвертируются в нормальные даты из-за использования объектов modResource — так запрограммировано в его свойствах. А потом, для форматирования даты, их нужно перевести обратно в timestamp. Выходит двойная ненужная конвертация.
pdoTools же работает напрямую с базой данных, без создания объектов и конвертации их значений, поэтому в чанк приходит timestamp, который не нужно дополнительно обрабатывать. Вы можете сразу применять модификатор date к значениям:
Это касается работы с датами ресурсов и в других сниппетах pdoTools.
Общие параметры для пакета pdoTools
Общие параметры
Общие параметры
Общие параметры для сниппетов, основанных на 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 строку с массивом, например . | |
| &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,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 | Тип сортировки по ТВ параметру. Возможные варианты: 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. В качестве шаблона будет использован код после этого префикса.
В INLINE чанках нельзя указывать сниппеты, другие чанки или фильтры вывода через обычные теги, потому что так парсер MODX обработает их в первую очередь, и сниппет получит совсем не то, что вы хотели.
Поэтому для INLINE чанков предусмотрена замена [[+]] на <<+>> — такие теги MODX пропускает, а pdoTools при работае конвертирует их как нужно. Конечно, вы всё равно можете использовать теги MODX, если вам нужно, чтобы в чанк попала уже обработанная информация, например:
@FILE. Вместо чанка из базы данных используется содержимое файла. Путь до файла указывается в систеной настройке pdotools_elements_path. Имя файла должно быть с расширением .tpl или .html.
@TEMPLATE. Указывается идентификатор или имя шаблона. Если пусто — для каждого ресурса будет использован его собственный шаблон.
@CHUNK. Аналогично простому указанию имени чанка, оставлено для совместимости со сторонними сниппетами.
Подробнее про возможности pdoParser можно прочитать в соответствующем разделе.
Возвращаемые значения
pdoTools умеет возвращать данные в разном виде, в зависимости от параметр &return . В основном это используют сами сниппеты для внутренних нужд, но вы можете указывать &return в pdoResources:
- chunks — оформленные чанки, по умолчанию.
- sql — подготовленный сырой SQL, полезно для отладки. Сам запрос не выполняется, только выводится на экран.
- data — готовый массив данных. Из-за особенностей работы сниппетов MODX этот вариант имеет смысл использовать только при вызове pdoFetch::run() напрямую из своего сниппета, в противном случае вы получите только строку «Array».
- ids — возвращает только идентификаторы документов, через запятую. Удобно для подстановки в качестве параметра другим сниппетам. Параметр &returnIds использует именно этот тип.
- json — возврат массива данных JSON строкой.
- serialize — возврат массива данных сериализованной строкой. Иногда, по непонятным причинам, может вызвать нехватку памяти. Лучше использовать json .
Источник