Getresources modx revo настройка
Общая цель — вывод списков Ресурсов и обощающий сниппет.
Требования
История
getResources был написан Джейсоном Ковардом (Jason Coward, aka opengeek) и выпущен 30 июня 2009.
Загрузка
Пакет можно загрузить из админки MODX Revolution через Управление пакетами или из репозитория дополнений MODX здесь
Использование
Сниппет getResources может быть вызван при помощи тега:
Вызовы без заданного параметра &tpl будет просто выводить массив в виде списка каждого конечного ресурса и его полей.
Доступные параметры
Параметры шаблонизации
# | Параметр | Описание |
---|---|---|
1 | tpl | Имя чанка, выступающего в качестве шаблона для ресурса. Если не установлен, свойства выдаются в виде списка для каждого ресурса |
2 | tplOdd | Имя чанка, выступающего в качестве шаблона для ресурсов с нечетным индексом (см. параметр idx |
3 | tplFirst | Имя чанка, выступающего в качестве шаблона для первого ресурса |
4 | tplLast | Имя чанка, выступающего в качестве шаблона для последнего ресурса |
5 | tpl_N | Имя чанка, выступающего в качестве шаблона для N-ного ресурса, например &tpl_4=`tpl4th` |
6 | tpl_nN | Имя чанка, выступающего в качестве шаблона для каждого N-ного ресурса, например шаблон &tpl_n4=`tpl4th` будет применен к каждому элементу, порядковый номер которого кратен 4 Добавлено в версии: 1.4.1-pl |
7 | tplPath | Дополнительный каталог для поиска чанков на основе файлов при использовании биндинга @FILE По умолчанию: assets_path + «elements/chunks/» |
8 | outputSeparator | Дополнительные строки для разделения каждого ресурса после шаблонизации По умолчанию: «\n» |
9 | toPlaceholder | Если установлен, присвоит результат в указанный плейсхолдер вместо вывода напрямую |
10 | toSeparatePlaceholders | Если установлен, присвоит КАЖДОМУ результату отдельное имя плейсхолдера в виде суффикса из значения этого параметра и порядкового номера (начиная с 0) Добавлено в версии: 1.3.0 |
@FILE и @INLINE шаблоны
Вы можете указать любому шаблону в качестве префикса @FILE или @INLINE для использования чанков, основанных на файлах или просто разметки соответственно.
- @FILE — Этот префикс позволяет использовать файл вместо чанка в базе данных в качестве шаблона. Путь и имя файла будет задано по умолчанию, если не указать параметр tplPath и поиск для шаблона @FILE будет вестись относительно вашей конфигурации assets_path + «elements/chunks/».
- @INLINE — Этот префикс позволяет задать разметку для использования в качестве шаблона прямо в значении параметра. Рекомендуется использовать это только когда определены tpl\* параметры в Property Set, в противном случае любой плейсхолдер в вашей строчной разметке может быть обработана до того, как контент будет передан getResources, так как кешируемые вложенные теги в MODX Revolution обрабатываются до начала обработки самого тега, содержащего эти вложенные теги.
Параметры выборки
# | Параметр | Описание | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | parents | Список идентификаторов родительских ресурсов, разделенных запятыми. Используйте -1 для исключения родительских ресурсов. По умолчанию: current Resource id | |||||||||||||||||||||||||||
2 | resources | Список идентификаторов ресурсов, разделенных запятыми, для включения их в результат выборки. Префикс в виде минуса исключает ресурсы из результата выборки. | |||||||||||||||||||||||||||
3 | depth | Целое число, указывающее глубину поиска для ресурсов от каждого из родителей. По умолчанию: 10 | |||||||||||||||||||||||||||
3 | tvFilters |
Оператор фильтра | Оператор SQL | Приведение к числу |
---|---|---|
Да | ||
=== | = | Да |
!== | != | Да |
<> | <> | Да |
== | LIKE | Нет |
!= | NOT LIKE | Нет |
> | > | Да |
>= | >= | Да |
=> | => | Да |
Любое поле ресурса (за исключением переменных шаблона) для сортировки. Некоторые из общих полей для сортировки — это publishedon, menuindex, pagetitle и др., но смотрите документацию по ресурсам для всех полей. Укажите только имя поля, без использования синтаксиса тегов. Обратите внимание, что при использовании таких полей, как template, publishedby и подобных для сортировки, они будут сортироваться по сырым значениям, таким как ID шаблона или юзера, а не по их именам.
Вы также можете отсортировать в случайном порядке, используя RAND(), вот так:
Начиная с версии 1.3.0 это также может быть JSON массив для сортировки по нескольким полям, например:
Если вы хотите сортировать в определенном порядке, вы можете сделать это, указав список идентификаторов ресурсов следующим образом:
Тоже самое возможно, если вы передадите список ID для сортировки в переменной шаблона, например:
По умолчанию: publishedon Добавлено в версии: 1.3.0
Другие параметры
# | Параметр | Описание |
---|---|---|
1 | showUnpublished | Если true, то будут показаны также ресурсы, которые не опубликованы. По умолчанию: 0 |
2 | showDeleted | Если true, то будут показаны ресурсы независимо от того, удалены они или нет. По умолчанию: 0 |
3 | showHidden | Если true, покажет ресурсы независимо от того, показываются они в меню или нет. По умолчанию: 0 |
4 | hideContainers | Если указан, то не будут показаны ресурсы, помеченные как контейнер (is_folder). По умолчанию: 0 |
5 | includeContent | Указывает, что содержание каждого ресурса должно возвращаться в результатах выборки. По умолчанию: 0 |
6 | includeTVs | Указывает, что значения переменных шаблона должны быть включены в набор свойств, доступных для каждого шаблона ресурса По умолчанию: 0 |
7 | includeTVList | Дополнительный список разделенных запятыми имет переменных шаблона для явного включения в результат, если includeTVs установлен в 1 Добавлено в версии: 1.4.0 |
8 | processTVs | Указывает, что переменные шаблона должны быть отрисованы так как они были бы представлены в ресурсе. Переменные шаблона должны быть включены для обработки (см. includeTVs/includeTVList). По умолчанию: 0 |
9 | processTVList | Дополнительный список имен переменных шаблона, разделенных запятыми, для явной обработки. Переменные шаблона, заданные здесь, должны быть включены через includeTVs/includeTVList Добавлено в версии: 1.4.0 |
10 | tvPrefix | Префикс для свойств в виде переменных шаблона По умолчанию: tv. |
11 | idx | Вы можете задать начало idx ресурсов, что представляет собой свойство, котороые увеличивается с каждым отрисованным ресурсом По умолчанию: 1 |
12 | first | Задает idx, который представляет собой первый ресурс По умолчанию: 1 |
13 | last | Задает idx, который представляет последний ресурс. По умолчанию это количество ресурсов, которые будут складываться + первый — 1 (?) |
14 | totalVar | Задает ключ плейсхолдера, устанавливаемого getResources для показа общего количества ресурсов, которые будут выбраны не учитывая значения limit. По умолчанию: total |
15 | debug | Если true, будет записывать sql-запросы в log MODX. По умолчанию: false |
Доступные плейсхолдеры
Плейсхолдеры доступные в ваших чанках форматирования getResources в основном зависят от ресурсов, которые вы перечисляете.
См. Все теги на странице «Часто используемые теги шаблона» — это список свойств, доступных для всех ресурсов.
Если ваш ресурс имеет переменные шаблона, те в свою очередь будут иметь соответствующие плейсхолдеры (помните, что плейсхолдеры будут использовать префикс, заданный через параметр &tvPrefix)
Кроме того, существуют следующие плейсхолдеры:
Плейсхолдер | Описание |
---|---|
Увеличивается с каждой итерацией, начиная с 1 (или со значения, установленного параметром &idx) |
Примеры
Вывод списка дочерних ресурсов текущего ресурса, используя чанк ‘myRowTpl’:
Вывод всех дочерних ресурсов ресурса с ID ‘5’, за исключением ресурса 10, используя чанк ‘myRowTpl’:
Вывод всех дочерних ресурсов ресурса с ID ‘5’, за исключением текущего ресурса, используя чанк ‘myRowTpl’:
Вывод всех дочерних ресурсов ресурса с ID ‘5’ с сортировкой как в дереве ресурсов используя чанк ‘myRowTpl’:
Вывод только заданных ресурсов, используя чанк ‘myRowTpl’:
Вывод последних 5 опубликованных ресурсов, у которых родительский ресурс с ID ‘5’, используя шаблон ‘blogPost’:
Вывод списка дочерних ресурсов текущего ресурса, основанного на шаблоне ресурсов:
Вывод списка дочерних ресурсов текущего ресурса, где ID шаблона ресурсов равен 1 или 2:
Вывод списка дочерних ресурсов текущего ресурса, где ID шаблона ресурсов равен 1, 2 или 3 (вы не можете использовать тот же ключ больше одного раза):
Показ сообщения, когда ничего не найдено (эквивалент «empty» в Ditto):
Показ переменных шаблона (Template Variables) с getResources
Чтобы уменьшить время обработки, getResources не получает значения TV по умолчанию. Если вы хотите показывать TV, вы должны включить следующие параметры:
Вам также нужен либо префикс для всех TV с tv. или использовать этот параметр в теге вашего сниппета:
В чанке tpl, который вы используете для вывода getResources, используйте тег плейсхолдера как здесь (но с именем вашего TV):
Использование getPage для постраничной навигации
В сочетании с getPage getResources позволяет делать мощные и гибкие нумерации ваших страниц.
Примеры
Берет первые 10 ресурсов, отсортированные по дате публикации (publishedon), которые внутри ресурса с ID 17, не больше чем на 2 уровня в глубину, с шаблоном ‘blogListPost’, включая переменные шаблона (TV) и содержимое (content):
Вывод последних за месяц ресурсов
Допустим у вас есть сниппет, который преобразовывает необходимую дату во время Unix, с которым сравнивается значение поля publishedon:
Далее просто добавьте параметр where, например если вы хотите узнать все опубликованные ресурсы за последний месяц:
Поиск и устранение неисправностей
Ничего не происходит
Прежде чем биться головой о стену, убедитесь, что это дополнение установленно на вашем сайте.
Выводится массив атрибутов
Вы забыли указать параметр `&tpl`. Без &tpl сниппет будет пытаться определить ресурсы, но вы не сказали ему как их форматировать. Проверьте, указан ли параметр &tpl в вызове вашего сниппета, как тут:
Вы допустили ошибку в имени чанка. Возможно у вас и указан &tpl, но чанк действительно существует? Если вы указали имя чанка, который не существует, getResources не будет знать как форматировать ваши ресурсы.
Даже если вы правильно задали параметр &tpl, возможно, вы случайно забыли амперсанд к одному из ваших других параметров. Например limit=`5` приведет вызов сниппета к фейлу и атрибуты будут выведены без форматирования. Правильный формат должен быть &limit=`5`.
Тот же самый ресурс выводится несколько раз (1.2.2 и предыдущие релизы)
Если вы видите, что один и тот же ресурс показывается несколько раз, попробуйте убрать параметр &sortbyTV.
Содержимого там нет
Вы извлекаете правильные ресурсы и вы видите какие-топравильно отформатированные результаты, но ваш плейсхолдер
ничего не выводит. Что происходит? Вам нужно указать параметр &includeContent=`1` чтобы получить содержимое.
См. также
Если вам нужно получить одно поле из другого ресурса, попробуйте использовать getResourceField.
источник