pdoArchive

28 апреля 2016, 10:24

Сниппет предназначен для вывода архива документов сайта с разбивкой на годы, месяцы и дни.

Чанки

  • tpl - Имя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран.
    @INLINE <li>[[+date]] <a href="[[+link]]">[[+menutitle]]</a></li>
  • tplYear - Шаблон для оформления года

    @INLINE <h3>[[+year]] <sup>([[+count]])</sup></h3><ul>[[+wrapper]]</ul>
  • tplMonth - Шаблон для оформления месяца

    @INLINE <li><h4>[[+month_name]] <sup>([[+count]])</sup></h4><ul>[[+wrapper]]</ul></li>
  • tplDay - Шаблон для оформления дня
    @INLINE <li><h5>[[+day]] <sup>([[+count]])</sup></h5><ul>[[+wrapper]]</ul></li>
  • tplWrapper - Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]].

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

Параметры

Сниппет принимает общие параметры pdoTools.

Параметр По умолчанию Описание
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 Генерировать ссылку с учетом класса ресурса.

Примеры

Обычный вызов:

[[!pdoArchive?
    &parents=`0`
]]

Вызов через pdoPage:

[[!pdoPage?
    &element=`pdoArchive`
    &parents=`0`
]]
[[!+page.nav]]

Пример вывода тикетов, как на картинке в начале страницы:

[[!pdoPage?
    &element=`pdoArchive`
    &parents=`0`
    &limit=`1000`
    &maxLimit=`1000`
    &scheme=`uri`
    &sortby=`publishedon`
    &dateField=`publishedon`
    &where=`{"class_key":"Ticket"}`
    &tplYear=``
    &tplMonth=`@INLINE <h4>{$month_name} {$year} <sup>({$count})</sup></h4><ul>{$wrapper}</ul>`
    &tpl=`@INLINE <li>{$date} <a href="{$link}">{$menutitle}</a> / <small>{$section}</small></li>`
    &leftJoin=`{
        "Parent": {
            "class": "modResource"
        }
    }`
    &select=`{
        "modResource": "*",
        "Parent":"Parent.pagetitle as section"
    }`
]]