Создание сайта на MODX Revolution
- Что такое getResources?
- Требования
- Установка
- Использование
-
- Доступные свойства
-
- Параметря шаблонизации
- Параметры выборки
- Прочие параметры
- Имеющиеся плейсхолдеры
- Примеры
- Отображение TV параметров в getResources
- Использование getPage для номерации страниц
-
- Примеры
Что такое getResources?
getResources — это многоцелевой сниппет MODX Revolution, который может извлекать содержимое полей из других ресурсов и выводить его в любом удобном виде. Это не замена Ditto, а скорее альтернатива, сниппет, который может выполнять функции более специализированных компонент, таких как Ditto, Wayfinder, Breadcrumbs; фактически любых компонент, которые выполняют вывод данных из списка ресурсов.
Требования
- MODX Revolution 2.0.0 или выше
- PHP5 или выше
Установка getResources
Установка производится из панели управления MODX Revolution стандартным способом через Система->Управление пакетами->Загрузить дополнения.
Использование
Снипет getResourses может быть вызван с использованием тега:
[[!getResources]]
вызов без &tpl свойста выведет просто список всех ресурсов и их полей.
Доступные свойства:
Параметры шаблонизации
Название | Описание | Значение по умолчанию | Добавлено в версии |
---|---|---|---|
tpl | Название чанка, отвечающего за вывод ресурсов. Если не указано, выводятся список всех ресурсов текущего уровня. | ||
tplOdd | Название чанка выступающего в качестве шаблона с нечётным значением idx. (смотрите свойство idx). | ||
tplFirst | Назнание чанка, который будет шаблоном вывода первого ресурса | ||
tplLast | Назнание чанка, который будет шаблоном вывода последнего ресурса | ||
tpl_N | Назнание чанка, который будет шаблоном вывода n-ного ресурса, например, &tpl_4=`tpl4th` | ||
tpl_nN | Назнание чанка, который будет шаблоном вывода каждого n-ного ресурса, например, &tpl_n4=`tpl4th` будет применяться к любому элементу, у которого id делится на 4. | 1.4.1-pl | |
tplPath | Дополнительный каталог для поиска файлов на основе чанков при использовании @FILE | ||
tplWrapper | Название чанка, выступающего в виде обёртки шаблона для вывода [Примечание: не работает с toSeparatePlaceholders]. Плейсхолдер, где элементы вставлены — [[+output]]. | 1.6.0-pl | |
wrapIfEmpty | Если истина, выведёт обёртку, указанную в &tplWrapper даже если вывводимые данные отсутствуют. | false | 1.6.0-pl |
outputSeparator | Дополнительная строка для разделения каждого tpl . | «\n» | |
toPlaceholder | Если установлено, присвоит результат данному плейсхолдеру вместо его непосредственного вывода. | ||
toSeparatePlaceholders | Если установлено, будет назначать каждый результат отдельному плейсхолдеру, названному по имени этого параметра с суффиксом в виде последовательных чисел, начиная с 0. | 1.3.0 |
Префиксы шаблонов @FILE и @INLINE
@FILE — этот префикс позволяет вам указать файл вместо чанка в базе данных в качестве шаблона. Путь и имя файла, который вы указываете, будут заданы по умолчанию, если вы не задаете свойство tplPath, а поиск шаблона @FILE будет выполняться относительно вашей конфигурации assets_path + «elements/chunks/.
@INLINE — этот префикс позволяет вам указать разметку для использования с вашим шаблоном непосредственно в значении параметра. Рекомендуется использовать этот префикс шаблона только при указании свойств tpl* в наборе свойств [Property Set], в противном случае любые плейсхолдеры в строковой разметке могут быть вычислены перед передачей содержимого getResourses, поскольку кэшируемые вложенные теги в MODX Revolution вычисляются перед началом обработки содержащего их тега. @INLINE должен сопровождаться пробелом, например : «@INLINE <li>[[+pagetitle]]</li>».
Пример использования некэшируемой ссылки с префиксом шаблона @INLINE :
[[!getResources? &tpl=`@INLINE <a href="[[!~[[+id]]]]" title="[[+pagetitle]]">[[+pagetitle]] ([[+id]]) </a>`]]
Параметры выборки :
Название | Описание | Значение по умолчанию | Добавлено в версии |
---|---|---|---|
parents | Список ифентификаторов, разделённых запятыми, выступающих в качестве родителей. Используйте -1 для игнорирования родителей при указании ресурсов. Если этого параметра не указать, getResources принимает &parents как текущий ресурс и выбирает дочерние ресурсы от него (а также ресурсы, указанные в параметрах &resourses). | id текущего ресурса | |
resources | Разделённый запятыми список идентификаторов, включаемых в результат. Добавте перед идентификатором «- «, чтобы исключить его из результата. | ||
depth | Целочисленное значение, указывающее глубину поиска документов от каждого родителя. | 10 | |
tvFilters | Может быть использован для фильтрации ресурсов по определённым TV параметрам. Они вводятся как [(имя tv-параметра)(оператор)](значение). Вы можете использовать два разделителя для объединения условий фильтра. |
Вы можете использовать фильтры «ИЛИ» (OR), в виде двойной вертикальной черты ( ||). Фильтр «ИЛИ» (OR) извлекает ресурсы, которые имеют один из перечисленных tv-параметров.
mytv==одно значение||mytv==другое значениеe
Вы можете также использовать фильтр «И» (AND) указывая запятую (,). Этот фильтр проверяет соблюдение всех условий.
mytv==одно значение,othertv==другое значениеe
Для расширения возможностей фильтрации вы можете группировать эти значения. Важно знать, что вначале обрабатываются условия «ИЛИ» (||), а затем «И». Давайте рассмотрим это на примере:
mytv==foo||mytv==bar,bartv==3||bartv==1
Это будет фильтрация ресурсов, удовлетворяющим одному из следующих условий:
mytv равно foo, или:
mytv равно bar И bartv равно 3, или:
bartv равно 1
Выше приведены примеры поиска точных значений. Если хотите, вы так же можете использовать знак процента(%) в качестве маски. Например:
mytv==%a%
Соответствует любым ресурсам, имеющим «а» в значении mytv.
mytv==a%
Соответствует любым ресурсам, имеющим значение mytv, начинающееся с «а».
mytv==%a
Соответствует любым ресурсам, имеющим значение mytv, заканчивающееся на «а».
В этих случаях вы также можете использовать разделители «ИЛИ» ( ||) и «И» (,).
Важно знать, что эта функция ищет необработанное значение tv-параметра для определенного ресурса. Это означает, что данное значение точно установлено для ресурса и, что оно не будет обработано в соответствии с типом tv-параметра (или же является типом по умолчанию в релизах до 1.4.2-pl; в этом релизе добавляется поддержка фильтрации, включая значения по умолчанию). Поэтому, если у вас tv-параметр «авто-метка», это означает, что необработанное значение представляе собой список, ограниченный запятыми, и он не разделен на теги, как вы это видите в панели управления.
Начиная с версии 1.4.2-pl, возможно использование новых операторов фильтра. Имеется целый ряд новых операторов сравнения, которые можно использовать при создании условий фильтрования. Кроме того, при использовании многих из этих операторов перед сравнением tv-параметры приводятся к числовым величинам. Вот перечень допустимых операторов :
Оператор фильтра | SQL оператор | Числовое преобразование |
<=> (безопасное сравнение с NULL) | <=> | Да |
=== | = | Да |
!== | != | Да |
<> | <> | Да |
== | LIKE | Да |
!= | Да | |
<< | < | Да |
<= | <= | Да |
=< | =< | Да |
>> | > | Да |
>= | >= | Да |
=> | => | Да |
sortby | Позволяет выполнять сортировку по любому полю ресурса (исключая tv-параметры). Некоторыми обычными полями, по которым возможна сортировка, являются : publishedon, munuindex, pagetitle и другие. Указывайте только имя поля, не используя синтаксис тега. Отметим, что при использовании для сортировки полей, подобных template, publishedby, они будут сортироваться по необработанным значениям, а не по их именам. |
Вы также можете использовать случайную сортировку, указав параметр RAND():
&sortby=`RAND()`
Начиная с версии 1.3.0 для сортировки по нескольким полям может использоваться массив JSON, например:
&sortby=`
{
"publishedon"
:
"ASC"
,
"createdon"
:
"DESC"
}
`
Если вы хотите выполнить сортировку в определенном особом порядке, вы можете сделать это, указав список идентификаторов (ID) ресурсов, подобно следующему :
&sortby=`
FIELD(modResource. id, 4,7,2,5,1 )
`
Это же возможно, если вы поместите идентификаторы в tv-параметр:
&sortby=`
FIELD(modResource.id,)
`
publishedon | Модифицировано в версии 1.3.0. |
sortbyAlias | Выстраивает псевдонимы для поля sortby. |
sortbyEscaped | Исключает имя поля, указанное в sortby. |
sortdir | Порядок, по которому производится сортировка. (По умолчанию: DESC) |
sortbyTV | tv-параметр, по которому производится сортировка. |
sortdirTV | Порядок, по которому производится сортировка при использовании sortbyTV. |
sortbyTVType | Указывает тип данных для sortbyTV. Возможными значениями являются : string, integer, decimal, datetime. (По умолчанию: string) |
limit | Ограничивает количество выдаваемых ресурсов. Используйте `0` для выдачи результатов без ограничений. (По умолчанию: 5) |
offset | Сдвиг выдаваемых по некоторому критерию ресурсов. (По умолчанию: 0) |
where | Выражение для критерия типа JSON для построения дополнительных условий. Смотрите примеры ниже, а также |
context | В каком контексте должен выполняться поиск. (По умолчанию в текущем) |
Прочие параметры:
Название | Описание | Значение по умолчанию | Добавлено в версии |
---|---|---|---|
showUnpublished | Если истина, будут отображаться ресурсы, снятые с публикации. | 0 | |
showDeleted | Если истина, будут отображаться ресурсы, помеченные для удаления. | 0 | |
showHidden | Если истина, будут отображаться ресурсы, независимо от того, отображаются ли они в меню. | 0 | |
hideContainers | Если установленно, не будут отображатся любые ресурсы, отмеченные как контейнер (is_folder). | 0 | |
includeContent | Указывает должно ли выдаваться в результатах содержимое каждого ресурса. | 0 | |
includeTVs | Указывает должны ли значения tv-параметров включаться в параметры, доступные каждому шаблону ресурса. | 0 | |
includeTVList | Дополнительный, разделяемый запятыми список имен tv-параметров для включения в явном виде, если includeTVs установлен в 1. | 1.4.0 | |
prepareTVs | Подготавливает значения tv-параметров, зависяшие от среды. | 1 | 1.5.0 |
prepareTVList | Органичивает tv-параметры теми, которые указаны по имени в разделенном запятыми списке. | 1.5.0 | |
processTVs | Указывает должны ли быть tv-параметры обработаны так, как они были бы представлены в ресурсе. tv-параметрыа должны быть включены для обработки (см. includeTVs/includeTVList). | 0 | |
processTVList | Дополнительный разделенный запятыми список имен tv- параметров, обрабатываемых явно. tv-параметры, указанные здесь, должны быть включены при помощи includeTVs/includeTVList | 1.4.0 | |
tvPrefix | Префикс для свойств tv-параметров. | tv. | |
idx | Вы можите определить начальный idx ресурсов, который представляет собой свойство, увеличивающееся при обработке каждого ресурса. | 1 | |
first | Определяет idx, представляющий собой первый ресурс. | 1 | |
last | Определяет idx, который представляет собой последний ресурс. По умолчанию это значение равноколичеству суммируемых ресурсов + first — 1 | ||
totalVar | Задает ключ плейсхолдера, устанавливаемого getResources для показа общего количества ресурсов, которые будут выбраны не учитывая значения limit. | total | |
debug | Если истина, отправит SQL запрос в лог-файл MODx | false |
Имеющиеся плейсхолдеры
Перечень плейсхолдеров, доступных для getResourses при форматировании чанков, зависит от ресурсов, с которыми вы работаете.
Смотрите раздел на странице «Обычно используемые теги шаблонов» («Commonly Used Template Tags») — здесь перечислены параметры, доступные для всех ресурсов.
Если ваш ресурс имеет tv-параметры, они будут иметь соответствующие плейсхолдеры (помните, что плейсхолдеры будут использовать префикс, задаваемый параметром &tvPrefix).
Кроме того имеется следующий плейсхолдер :
[[+idx]] | Увеличивается с каждой итерацией, начиная с 1 (или со значения, заданного параметром &tvPrefix) |
Примеры
За более детальными примерами обращайтесь к подразделу документации .
Пример вывода списка дочерних ресурсов текущего ресурса с использованием чанка ‘myRowTpl’ :
[[!getResources? &parents=`71` &tpl=`myRowTpl`]]
Вывод списка всех дочерних ресурсов, начиная с 5, за исключением 10, используя чанк ‘myRowTpl’:
[[!getResources? &parents=`5` &resources=`-10` &tpl=`myRowTpl`]]
Вывод указанных ресурсов с использованием чанка ‘myRowTpl’
[[!getResources? &parents=`-1` &resources=`10,11,12` &tpl=`myRowTpl`]]
Выводит 5 последних опубликованных ресурсов с помощью чанка ‘blogPost’
[[!getResources? &parents=`5` &limit=`5` &tpl=`blogPost` &includeContent=`1`]]
Выводит список дочерних ресурсов текущего ресурса, где id шаблона ресурсов 1 или 2
[[!getResources? &parents=`71` &where=`{
"template:="
:1,
"OR:template:="
:2}` &tpl=`myRowTpl`]]
Выводит список дочерних элементов текущего ресурса с id шаблонов 1, 2 или 3 (вы пожете использовать один ключ несколько раз)
[[!getResources? &parents=`71` &where=`{
"template:IN"
:[1,2,3]}` &tpl=`myRowTpl`]]
Сообщание, выдаваемое при отсутствии результата:
[[!getResources:default=`No results found`? &parents=`71` &tpl=`myRowTpl`]]
Отображение TV параметров в getResources
Чтобы уменьшить время поиска, getResources не получает TV параментр по умолчанию. Если вы хотите отобразить TV, вы должны включать в вызов следующие параметры:
&includeTVs=`1` &processTVs=`1`
Вам необходим префикс перед каждым TV параметром.
&tvPrefix=``
В Tpl чанке, который вы использовать для отображения getResources используйте placeholder в месте, где должен отображаться TV параметр:
[[+tv.my_tv]]
Использование getPage для нумерации страниц
В сочетании с GetPage, GetResources позволяет делать мощное и гибкое разбиение на страницы вашего сайта.
Пример:
[[!getPage?
&elementClass=`modSnippet`
&element=`getResources`
&parents=`17`
&depth=`2`
&limit=`10`
&pageVarKey=`page`
&includeTVs=`1`
&includeContent=`1`
&tpl=`blogListPost`
]]
<div>
<ul>
[[!+page. nav]]
</ul>
</div>
и чанк blogListPost:
<div
class
=
"blogPost"
>
<div
class
=
"date"
></div>
<h3><a href=
"[[~[[+id]]]]"
title=
""
>[[+pagetitle]]</a></h3>
<p
class
=
"author"
><strong>Author:</strong> <span
class
=
"author"
>
[[+createdby:userinfo=`username`]]</span></p>
<p
class
=
"summary"
>[[+introtext]]</p>
<p
class
=
"readmore"
><a href=
"[[~[[+id]]]]"
><span>Read more</span></a></p>
<div
class
=
"clear"
></div>
</div>
<hr/>
Назад | Вперёд |
Сниппет getResources — статья от web студии разработки Witech
By Максим Леонов
/
13 Декабря, 2017
/
1775
В этой статье мы разберемся что такое getResources MODx Revolution, выясним, какие у него параметры, вывод и сортировка — с примерами и пояснениями. Приятного чтения.
- Что такое getResourses
- Как использовать
- Параметры
- Свойства
Что такое getResourses
Возвращает список используемых ресурсов (общее), играет роль фрагмента обобщения.
Проще говоря — позволяющий извлекать и выводить содержание полей других ресурсов в любом месте и виде.
Как использовать
Сниппет getResources может быть вызван через тег:
[[getResources]]
До версии 1.6.1-pl вызовы без указанного свойства &tpl будут выводить массив каждого ресурса в результирующем наборе (списке) и его полей. Начиная с версии 1.6.1-pl поведение изменилось, и вам придется использовать «&debug=`1`» для получения полного ответа. Пример:
[[getResources? &debug=`1`]]
[[getResources? &parents=`choose_an_id` &debug=`1`]]
Параметры
- tpl — имя чанка, который выступает как шаблон ресурсов. В случае если шаблон не найден, данные будут выводиться в виде массива.
- tplOdd — имя чанка, который выступает как шаблон с нечетным индексом.
- tplFirst — имя чанка, который выступает как шаблон для первого ресурса.
- tplLast — имя чанка, который выступает как шаблон для заключительного ресурса.
- tpl_N -имя чанка, который выступает как шаблон для N-ного ресурса.
- tpl_nN — имя чанка, который выступает как шаблон для каждого N-ного ресурса.
- tplPath — каталог для просмотра чанков на базе файлов с использованием @FILE (по умолчанию assets_path + «elements/chunks/»).
- tplWrapper — название чанка serving как обвёртка шаблона для вывода (не работает с toSeparatePlaceholders. Плейсхолдер, где элементы вставлены — [[+output]]).
- wrapIfEmpty — если истинна, будет выводить обвёртку указанную в &tplWrapper даже если вывод пуст.
- outputSeparator — доп строка для разделения каждого шаблона.
- toPlaceholder — если установлен, присвоит результат в этот плейсхолдер вместо вывода напрямую.
- toSeparatePlaceholders — если установлен, присвоит каждый результат разделяющему плейсхолдеру названного с помощью суффикса из значения данного параметра и номера (начиная с нуля).
Свойства
- Parents — список ID родительских ресурсов, разделенные запятыми. Для исключения родительских ресурсов используется ID ресурса со знаком минус. (по умолчанию ID текущего ресурса).
- Resources — список ID ресурсов, разделенные запятыми, которые должны включены в результат выборки. ID ресурса, который имеет префикс со знаком минус, исключаются из результата выборки.
- Depth — целочисленное значение, которое указывает глубину поиска ресурсов от родительского элемента (по умолчанию 10).
- tvFilters — может применяться для фильтрации ресурсов по конкретным значениям TV. (mytv==somevalue, othertv==othervalue).
- Sortby — может применяться для сортировки ресурсов по конкретным полям. (&sortby=`{«publishedon»:»ASC», «createdon»:»DESC»}`, по умолчанию createdon).
- sortbyAlias — сортировка по алиасу.
- sortbyTV — сортировка по TV параметру.
- limit — лимит выводимых ресурсов. Используйте 0 для снятия ограничения (по умолчанию 5).
Похожие публикации
Читайте нас на Яндекс Дзен
By Максим Леонов
/
08 Марта, 2018
/
1531
Необходимость создания сайта
By Максим Леонов
/
05 Сентября, 2017
/
2175
Создание системы блога в MODx
Фильтр— ModX getResources & tvFilters не работает
спросил
Изменено 5 лет, 3 месяца назад
Просмотрено 893 раза
У меня есть выходные данные от getResourses, которые мне нужно отсортировать по значению переменной шаблона, но фильтр показывает ресурсы, которые имеют только одно значение.
Например, этот код показывает ресурсы, которые имеют значение только Manhattan
TV.
Тип ввода переменной шаблона — тег, тип вывода — по умолчанию. Я попытался изменить тип ввода на Auto-Tag.
[[!getPage@Series? &element=`получить ресурсы` &parents=`[[*id]]` &tpl=`Каталог новых серий` &limit=`0` &отладка=`1` &includeTVs=`1` &processTVs=`1` &tvFilters=`door-color==Манхэттен` &tvPrefix=`` ]]
Скриншот вариантов входа телевизора
Вывод с намеренно нарушенным именем tpl
TV значение ресурса, которое не выводится, но должно, потому что имеет тег Manhattan
результат такой же.
- фильтр
- modx
- modx-revolution
- шаблон-переменные
- modx-getresources
Я нашел ответ.
Для фильтрации по ТВ с несколькими значениями необходимо добавить % % к значению.
Например, мой код должен выглядеть так:
[[!getPage@Series? &element=`получить ресурсы` &parents=`[[*id]]` &tpl=`Каталог новых серий` &limit=`0` &отладка=`1` &includeTVs=`1` &processTVs=`1` &tvFilters=`цвет двери==%Манхэттен%` &tvPrefix=`` ]]
Вместо
[[!getPage@Series? &element=`получить ресурсы` &parents=`[[*id]]` &tpl=`Каталог новых серий` &limit=`0` &отладка=`1` &includeTVs=`1` &processTVs=`1` &tvFilters=`door-color==Манхэттен` &tvPrefix=`` ]]
Надеюсь, это поможет вам не тратить время на попытки выяснить, что не так.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
modx — Как я могу показать переменные шаблона из статей с помощью getResources?
Задавать вопрос
спросил
Изменено 7 лет, 1 месяц назад
Просмотрено 522 раза
Я хочу использовать «getResources», чтобы показывать статьи из дополнительных «статей» на моей домашней странице.
Вот код моей домашней страницы:
[[getResources? &parents=`52` &tpl=`sample.ArticlesLatestPostTpl` &showHidden=`1` &includeContent=`1` &includeTVs=`1` &processTVs=`1` ]]
и это мой образец .ArticlesLatestPostTpl
:
- [[+опубликовано:strtotime:date=`%b %d, %Y`]]`]]
Моя переменная шаблона [[*myimage]]
Но я не вижу переменную шаблона статьи. Вместо этого я вижу переменную шаблона домашней страницы.
Кто-нибудь может мне помочь?
- modx
- modx-revolution
- modx-getresources
Я нашел ответ.
Вместо [[*myimage]]
мне нужно написать [[+myimage]]
.
И работает! 🙂
0
Это работает следующим образом:
- [[*image]] отобразит данные внутри поля «изображение» текущего документ.