pdoArchive. Modx pdo
pdoTitle / Сниппеты / pdoTools / docs.modx.pro
Сниппет выводит оформленный тег title на страницу сайта, который состоит из имени страницы, имён родителей этой страницы и, других параметров.
В первую очередь он предназначен для визульного различия документов с постраничной навигацией.
Параметры
Сниппет не принимает никаких общих параметров pdoTools, из-за специфики своей работы. Но передаёт все полученные параметры во вложенный вызов pdoCrumbs.
&id | 0 | Идентификатор ресурса. |
&limit | 3 | Лимит выборки родителей ресурса. |
&titleField | longtitle | Поле текущего ресурса для вывода в заголовке страницы. |
&cache | Кэширование выборки родителей ресурса для заголовка страницы. | |
&cacheTime | 0 | Время актуальности кэша, в секундах. |
&tplPages | @INLINE ... | Шаблон оформления пагинации в заголовке страницы. |
&pageVarKey | page | Имя переменной для поиска номера страницы в url. |
&tplSearch | @INLINE ... | Шаблон оформления поискового запроса в заголовке страницы. |
&queryVarKey | query | Имя переменной поискового запроса в url. |
&minQuery | 3 | Минимальная длина поискового запроса для вывода в заголовке страницы. |
&outputSeparator | / | Разделитель элементов в заголовке страницы. |
®isterJs | 1 | Вставить на страницу javascript с переменными для поддержки &ajaxMode сниппета pdoPage. |
Поддержка навигации
pdoTitle определяет, когда на страницу был передан параметр &pageVarKey и выводит в title указание на это. ]
Функция работает и при включенном &ajaxMode сниппета pdoPage, тогда заголовок меняется без перезагрузки страницы.
Поддержка поиска
Если в url был передан параметр &queryVarKey, то сниппет вставит для него чанк &tplSearch в тег.
По умолчанию вставляется плейсхолдер [[+mse2_query]] сниппета mSearch3.
Кэширование
pdoTitle нужно вызывать некэшированным, чтобы он мог реагировать на параметры в url, но вы можете кэшировать внутренний вызов выборки родителей ресурса, который работает через pdoCrumbs.
Экономия выйдет небольшой, потому что для title не нужно выбирать много ресурсов, но такая функция может пригодиться на слабых хостингах.
Javascript переменные
Если включен параметр ®isterJs, то сниппет вставит в страницу свои переменные в объекте pdoTitle.
Вы можете найти там разделитель элементовtitle и шаблон оформления постраничной навигации.
Примеры
Обычный вызов на странице:
<title>[[!pdoTitle]] / [[++site_name]]</title>Вызов с увеличенной выборкой родителей ресурса и кэшированием:
<title>[[!pdoTitle?limit=`5`&cache=`1`]] / [[++site_name]]</title>tplWrapper | Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]]. | |
wrapIfEmpty | Включает вывод чанка-обертки (tplWrapper) даже если результатов нет. | |
dateField | createdon | Поле ресурса для получения даты документа: createdon, publishedon или editedon. |
dateFormat | %H:%M | Формат даты для функции strftime() |
showLog | Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте "mgr". | |
sortby | createdon | Любое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре "includeTVs". Можно указывать JSON строку с массивом нескольких полей. Для случайно сортировки укажите "RAND()" |
sortbyTV | Сортировка по ТВ параметру. Если он не указан в &includeTVs, то будет подключен автоматически. | |
sortbyTVType | Тип сортировки по ТВ параметру. Возможные варианты: string, integer, decimal и datetime. Если пусто, то ТВ будет отсортирован в зависимости от его типа: как текст, число или дата. | |
sortdir | DESC | Направление сортировки: по убыванию или возрастанию. |
sortdirTV | ASC | Направление сортировки ТВ: по убыванию или возрастанию. Если не указан, то будет равен параметру &sortdir. |
limit | Ограничение количества результатов выборки. Можно использовать "0". | |
offset | Пропуск результатов от начала. | |
depth | 10 | Глубина поиска дочерних ресурсов от родителя. |
outputSeparator | \n | Необязательная строка для разделения результатов работы. |
toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран. | |
parents | Список родителей, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 - выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключается из выборки. | |
includeContent | Включаем поле "content" в выборку. | |
includeTVs | Список ТВ параметров для выборки, через запятую. Например: "action,time" дадут плейсхолдеры [[+action]] и [[+time]]. | |
prepareTVs | 1 | Список ТВ параметров, которые нужно подготовить перед выводом. По умолчанию, установлено в "1", что означает подготовку всех ТВ, указанных в "&includeTVs=``" |
processTVs | Список ТВ параметров, которые нужно обработать перед выводом. Если установить в "1" - будут обработаны все ТВ, указанные в "&includeTVs=``". По умолчанию параметр пуст. | |
tvPrefix | tv. | Префикс для ТВ параметров. |
where | Массив дополнительных параметров выборки, закодированный в JSON. | |
showUnpublished | Показывать неопубликованные ресурсы. | |
showDeleted | Показывать удалённые ресурсы. | |
showHidden | 1 | Показывать ресурсы, скрытые в меню. |
hideContainers | Отключает вывод контейнеров, то есть, ресурсов с isfolder = 1. | |
context | Ограничение выборки по контексту ресурсов. | |
totalVar | total | Имя плейсхолдера для сохранения общего количества результатов. |
resources | Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
select | Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {"modResource":"id,pagetitle,content"}. | |
scheme | Схема формирования ссылок: "uri" для подстановки поля uri документа (очень быстро) или параметр для modX::makeUrl(). | |
useWeblinkUrl | 1 | Генерировать ссылку с учетом класса ресурса. |
docs.modx.pro
Общие параметры / 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 | Имя чанка для каждого второго ресурса. |
&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.
docs.modx.pro