Содержание

Создание сайта на MODX Revolution

Что такое 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 assets_path + «elements/chunks/»  
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  Да
!=  NOT 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/>

Вывод списка ресурсов на сайте с использованием pdoResources

Общие параметры для сниппетов, основанных на 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 Имя чанка для каждого чётного ресурса (хоть «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. В качестве шаблона будет использован код после этого префикса.

[[!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.

[pdoTools] Версия 1.4.0, сниппет pdoResources / Расширения MODX / Блоги / bezumkin.ru

Все пользователи MODX Revolution знают основной инструмент для работы с документами сайта — getResources. Возможности его почти безграничны, параметров и настроек хватает для любых ситуаций.

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

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

И вот, наконец-то, новый сниппет pdoResources включен в пакет по умолчанию и является самым главным изменением в новой версии pdoTools. Поэтому, с него и начнем.

Сниппет pdoResources

Это сниппет, написанный на pdoTools и входящий в состав пакета. Он предназначен для получения и вывода документов сайта и, насколько это возможно, повторяет функционал getResources.

Основное отличие — работа с ТВ параметрами:

  • Нет &processTVs=«
  • Параметр &includeTVs=« принимает имена ТВ параметров. То есть, нужно указывать, какие ТВ выбирать. Включить сразу все подряд ТВ нельзя.
  • Все возможные дополнительные условия указываются в &where=«. Нет отдельной фильтрации по ТВ, но это можно указать вручную.
  • Нет условий при работе с чанками (conditional chunks). Если будет нужно — добавим.
Особая работа с ТВ обусловливается тем, что все ТВ выбираются в том же запросе, что и ресурсы, то есть, используется &leftJoin=«. Все параметры с описаниями нужно смотреть вот тут.

Ну а теперь — про скорость!

Выборка из БД
Простая выборка из БД, без оформления, без ТВ параметров, чистый тест скорости получения данных.
Вызовы сниппетов:
[[!getResources?
	&parents=`2`
	&limit=`n`
]]

[[!pdoResources?
	&parents=`2`
	&limit=`n`
]]
Результаты:
Limit getResources pdoResources
10 0.1592 s 0.1304 s
50 0.3502 s 0. 1495 s
100 0.5500 s 0.1762 s
500 2.1891 s 0.3045 s
Благодаря работе через PDO и выборку всего необходимого в один запрос, pdoResources уверенно лидирует, особенно при больших объёмах.
Выборка и оформление
Та же выборка, но с указанием чанка, в котором всего два плейсхолдера:
<p>[[+idx]] - [[+pagetitle]]</p>
Вызовы сниппетов:
[[!getResources?
	&parents=`2`
	&tpl=`tpl.Test.row`
	&limit=`n`
]]

[[!pdoResources?
	&parents=`2`
	&tpl=`tpl.Test.row`
	&limit=`n`
]]
Результаты:
Limit getResources pdoResources
10 0.1721 s 0.1384 s
50 0.3994 s 0.1687 s
100 0.6915 s 0.2047 s
500 2.7538 s 0. 4851 s
Тут ситуация никак не меняется.
Выборка и оформление + 2 ТВ параметра
Добавляем 2 ТВ параметра в наш чанк и выборку:
<p>[[+idx]] - [[+pagetitle]].
[[+tv.meta_description]] [[+tv.meta_keywords]]</p>
Вызовы сниппетов:
[[!getResources?
	&parents=`2`
	&tpl=`tpl.Test.row`
	&includeTVs=`1`
	&includeTVList=`meta_description,meta_keywords`
	&limit=`n`
]]

[[!pdoResources?
	&parents=`2`
	&tpl=`tpl.Test.row`
	&includeTVs=`meta_description,meta_keywords`
	&limit=`n`
]]
Результаты:
Limit getResources pdoResources
10 0.2029 s 0.1383 s
50 0.5014 s 0.1747 s
100 0.8860 s 0.2230 s
500 4.0989 s 0.5248 s
А вот тут pdoResources вообще выбегает за пределы стадиона, благодаря присоединению ТВ к основному запросу, а не отдельной выборке в цикле через xPDO.

Выводы

Дальнейшие тесты проводить не вижу смысла, ибо в зависимости от чанков и условий выборки разрыв будет только увеличиваться.

Это достигается благодаря двум основным составляющим:

  1. Выборка всего нужно за один запрос, через PDO.
  2. Предварительная обработка чанков, когда значения из ресурса заменяются в чанке без парсера MODX.
Есть конечно и еще много разных оптимизаций\улучшений, но эти 2 — принципиальные. Именно они дают такой прирост производительности.

Обращаю ваше внимание, что это работа без fastMode и быстрых плейсхолдеров.

Остальные изменения pdoTools

Внимание, это изменения, которые влияют на работу всех сниппетов pdoTools. То есть, новые свойства можно использовать и у miniShop2 и у Tickets!

Параметр sort теперь принимает массивы в виде JSON строк, например:

[[!msProducts?
	&sortby=`{
		"publishedon":"desc"
		,"pagetitle":"asc"
	}`
]]

Добавлена автоматическая замена имён ТВ в &where. Тут нужно немного пояснить: из-за того, что ТВ присоединяются к запросу в БД, используются псевдонимы, и при указании
&includeTVs=`test`
в запросе мы получаем
`TVtest`.`value` as `test`
То есть, для работы с присоединённым ТВ нужно было указывать вот такое условие:
&includeTVs=`test`
&where=`{
	"TVtest.value:!=":"0"
}`
С версии 1.4.0 вы можете указать просто:
&includeTVs=`test`
&where=`{
	"test:!=":"0"
}`
и замена в запросе будет произведена автоматически.

Новый метод pdoTools::defineChunk(), который позволяет назначить кучу чанков для вывода результатов, согласно логики getResources.
Этот метод выдает имя чанка, используя параметры:
&tplFirst — чанк для первой строки результатов
&tplLast — чанк для последней строки результатов
&tplOdd — чанк для каждой второй строки
&tpl_N — чанк для n строки, например для 4й строки будет &tpl_4=«
&tpl_nN — чанк для каждой n строки, например для каждой третьей будет &tpl_n3=«

Эта возможность не включится автоматически — для нее сниппеты нужно апгредить. Конечно, новый pdoResources это уже умеет.

В лог менеджеру теперь выводится потребление памяти. Не знаю, пригодится это кому то, или нет — но мне нравится. Для просмотра лога нужно быть авторизованным в админке у вызвать сниппет с параметром

&showLog=`1`

Заключение

С версии 1.4.0, pdoTools стал не только библиотекой для написания быстрых сниппетов, но и гораздо более быстрой заменой getResources.

Текущая версия — бета. Возможны ошибки и недоработки, но уверен, вместе мы их поправим. В дальнейшем я планирую добавить сниппеты pdoMenu и pdoSitemap, которые, надеюсь, будут повторять функционал Wayfinder и GoogleSiteMap, только более быстро.

По GoogleSiteMap, кстати, уже есть наработки.

И всё таки, чего же нет в pdoResources?

Список вещей, которые есть в getResources, но пока не реализованы в pdoResources:
  • @FILE и @INLINE чанки — не уверен, что кто-то этим пользуется
  • &toSeparatePlaceholders — тоже самое. (Появилось в 1.4.1)
  • &tvFilters — не реализовано, но работает при указании ТВ в &where, например
    [[!pdoResources? &includeTVs=`test` &where=`{"test:!=":""}`]]
  • &sortbyTV, &sortdirTV и &sortbyTVType — не реализовано, но работает при указании сортировки в обычном &sortby, например:
    [[!pdoResources? &includeTVs=`test` &sortby=`{"test":"desc"}`]]
  • &prepareTVs, &prepareTVList, &processTVs, &processTVList — этого нет, и скорее всего, не будет.
  • &debug — есть гораздо более мощный и удобный &showLog=`1`
  • &sortbyAlias, &sortbyEscaped — не знаю, зачем они.
  • &tplCondition, &conditionalTpls и $tplOperator — чанки с условием, в документации не описаны, но скорее всего — сделаю. (Появилось в 1.4.1)
Всё остальное в наличии.

Добавление новых комментариев отключено.

Все о компьютерах — Документация сниппета getResources для MODx Revolution


getResources – это сниппет MODX Revolution, который извлекает содержимое полей из других ресурсов и выводит его в любом удобном для вас виде.

Использование

[[getResources]]

Если не задать параметр &tpl будет выводить массив данных полей вложенных ресурсов, но для этого используйте &debug=`1`

Параметры

Параметры шаблона
НазваниеОписаниеПо умолчанию
tpl Имя чанка, который выступает как шаблон ресурсов. В случае если шаблон не найден, данные будут выводиться в виде массива  
tplOdd Имя чанка, который выступает как шаблон с нечетным индексом (смотрите параметр idx)  
tplFirst Имя чанка, который выступает как шаблон для первого ресурса  
tplLast Имя чанка, который выступает как шаблон для заключительного ресурса  
tpl_N Имя чанка, который выступает как шаблон для N-ного ресурса, к примеру &tpl_4=`tpl4th`  
tpl_nN Имя чанка, который выступает как шаблон для каждого N-ного ресурса, к примеру шаблон&tpl_n4=`tpl4th` будет приложен к каждому 4-му элементу  
tplPath Каталог для просмотра чанков на базе файлов с использованием @FILE assets_path + "elements/chunks/"
tplWrapper Название чанка serving как обвёртка шаблона для вывода Примечание: Не работает с toSeparatePlaceholders. Плейсхолдер, где элементы вставленны — [[+output]].  
wrapIfEmpty Если истинна, будет выводить обвёртку указанную в &tplWrapper даже если вывод пуст.  
outputSeparator Доп строка для разделения каждого шаблона. "\n"
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

Примеры

Выводит список дочерних ресурсов текущей страницы с использованием шаблона «MyTpl»

[[!getResources? &parents=`[[*id]]` &tpl=`myTpl`]]

Выводит список дочерних ресурсов 4ой страницы с использованием шаблона «MyTpl», исключая дочерний ресурс с индификатором 7

[[!getResources? &parents=`4` &resources=`-7` &tpl=`myTpl`]]

Выводит только ресурсы с индификаторами 10,11 и 12 с использованием шаблона «MyTpl»

[[!getResources? &parents=`-1` &resources=`10,11,12` &tpl=`myTpl`]]

Выводит список из 5и дочерних ресурсов 5ой страницы с использованием шаблона «MyTpl», включая содержимое дочерних ресурсов

[[!getResources? &parents=`5` &limit=`5` &tpl=`MyTpl` &includeContent=`1`]]

Оригинальная информация по сниппету на английском:


Сниппет getResources — статья от web студии разработки Witech

By Максим Леонов

/

13 Декабря, 2017

/ 1298

В этой статье мы разберемся что такое getResources MODx Revolution, выясним, какие у него параметры, вывод и сортировка — с примерами и пояснениями. Приятного чтения.

Что такое 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).

pdoTools / Утилиты / Дополнения MODX / modstore.pro

Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Внимание, этот компонент требует версию MODX не ниже 2. 3 !

pdoTools — это набор удобных сниппетов для повседневной работы + небольшая библиотека, которая делает их очень быстрыми.

Благодаря использованию общей библиотеки, все сниппеты pdoTools обладают единым минимальным функционалом:

  • Все запросы в БД работают через PDO. Объекты xPDO не создаются, только если они действительно не нужны.
  • Предварительная обработка простых плейсхолдеров в чанках. Парсер MODX разбирается только со сложными вызовами.
  • Правильная сортировка, подготовка, обработка и вывод ТВ параметров.
  • Код чанков можно указывать прямо при вызове сниппета, загружать обычным образом или из статичных файлов.
  • «Быстрые плейсхолдеры» в чанках, которые заменяют фильтры типа «isempty» и оборачивают значения в теги только если те не пусты.
  • Ведение подробного журнала работы сниппета с отметками времени, для отладки.

Все запросы строятся на xPDO, выборка производится через PDO для экономии ресурсов и скорости.

В состав входят:

  • pdoResources — Очень быстрая замена для getResources, совместимая по параметрам.
  • pdoMenu — Замена для Wayfinder, строит меню.
  • pdoUsers — Выборка и вывод пользователей сайта, с фильтрацией по ролям и группам.
  • pdoCrumbs — Хлебные крошки, замена BreadCrumb.
  • pdoSitemap — Быстрая генерация карты сайта, замена GoogleSiteMap.
  • pdoNeighbors — Вывод ссылок на соседние документы.
  • pdoField — Вывод любого поля документа, замена getResourceField и UltimateParent.
  • pdoPage — Постраничный вывод результатов, замена getPage.

Основные возможности


— Любые выборки, из любых таблиц с любыми условиями и джоинами.
— Учет времени на каждую операцию, подробный лог для выявления узких мест.
— Полная совместимость с getPage для постраничного вывода результатов.
— Самый быстрый процессинг чанков, быстрее только вообще без них.
Встроенный шаблонизатор Fenom в версии 2.0

Modx REVO: getProducts — более быстрая альтернатива getResources от shopkeeper для работы с каталогом

Параметры сниппета

parents — ID родительских ресурсов через запятую. По умолчанию текущий.

resources — Список ID ресурсов (товаров) через запятую.

depth — Глубина поиска родителей. По умолчанию 1.

tpl — Имя чанка шаблона для вывода ресурса.

outerTpl — Имя чанка шаблона обертки вывода. Доступен только плейсхолдер [[+inner]].

className — Имя класса (объекта) элементов таблицы БД. По умолчанию «modResource».

packageName — Имя пакета элементов таблицы БД. Например: shop — будет запрошен класс по адресу «/core/components/shop/model/shop/shopcontent.class.php». Рекоммендуется использовать пакет MIGXDB (http://modx.com/extras/package/migx).

where — JSON строка для условия WHERE в SQL запросе. Пример: &where=`{«template»:15}` (только поля ресурсов, без TV).

sortby — Поле для сортировки (только поля ресурсов, без TV). По умолчанию «menuindex». Для сортировки вразнобой использовать &sortby=`RAND()`.

sortdir — Направление сортировки. По умолчанию «ASC».

sortbyTV — Сортировка по TV. Указать имя TV.

sortdirTV — Направление сортировки по TV (ASC|DESC). По умолчанию «ASC»;

sortbyTVType — Тип значения TV (string|integer). По умолчанию «string»;

orderby — JSON строка сортировки. Пример: &orderby=`{«parent»:»ASC»,»pagetitle»:»ASC»}`

tvFilters — JSON строка фильтрации по ТВ. Пример: &tvFilters=`{«country»:»Китай»,»producer»:»Sony»}`. Другие примеры ниже.

includeTVs — Добавить плейсхолдеры значений TV для ресурсов (1|0). Префикс для TV: «tv.». Пример: [[+tv.image]]. По умолчанию = 0 (отключен).

includeTVList — Список имён TV, которые нужно добавить через запятую.

processTVs — Применять параметр «Параметры вывода» для TV.

processTVList — Список TV через запятую, для которых применять processTVs.

fromParentList — список полей через запятую, которые нужно добавить товарам от родителей. Например «pagetitle,image» — в чанке сниппета будут доступны плейсхолдеры [[+parent.pagetitle]] и [[+parent.image]] (TV). По умолчанию выключено.

addSubItemCount — В чанке сниппета будет доступен плейсхолдер [[+subitemcount]] — число дочерних ресурсов.

subItemCountWhere — JSON строка для условия WHERE в SQL запросе для подсчета дочерних элементов.

noResults — Текст, который будет выводиться, если по запросу ничего не найдено.

toPlaceholder — Имя плейсхолдера, в который нужно отправить результат работы сниппета. По умолчанию не используется.

totalVar — Имя плейсхолдера с общим количеством ресурсов. По умолчанию «total».

context — Контекст, из которого нужно вывести ресурсы. По умолчанию текущий.

activeParentSnippet — Сниппет для активного контейнера-ресурса — [[+activeParent_snippet]]. См. пример с меню ниже.

activeClass — Имя CSS-класса для активного ресурса. По умолчанию «active».

includeContent — Включать в выборку из БД значение поля «content» (1|0). По умолчанию выключено.

returnIDs — Возвращать только ID рессурсов (1|0). По умолчанию 0 (выключено).

useSmarty — Использовать в чанке шаблонизатор Smarty (1|0). По умолчанию 0 (выключено). Подробнее ниже.

debug — Режим отладки (1|0). В журнал ошибок будут писаться SQL запросы, полученные в сниппете. По умолчанию = 0 (отключен).

Параметры кэширования

gp_cache — Включить кэширование (1|0). По умолчанию выключено — 0.

cacheId — Идентификатор кэша. По умолчанию «gpCache».

Необязательные параметры кэширования

cache_key — Ключ кэша (название папки для файлов кэша). По умолчанию берется из настроек системы — cache_resource_key.

cache_handler — Обработчик кэширования. По умолчанию берется из настроек системы — cache_resource_handler (xPDOFileCache).

cache_expires — число секунд для кэширования. По умолчанию 0 (бесконечное).


Примеры фильтрации

Пример фильтрации по цене — больше и меньше: 

&tvFilters=`{"price:>=,<=:AND":[200,500]}`

Пример с поиском подстроки: 

&tvFilters=`{"param:LIKE":"%черный%"}`

Пример для поиска по стандартным полям: 

&where=`{"temlate:=:AND":"2","pagetitle:LIKE:AND":"%черный%"}`

Поиск по множественным значениям: 

&tvFilters=`{"param:LIKE:OR":["%черный%","%синий%","%зеленый%"]}`

Плейсхолдеры в чанке «tpl»

idx — Индекс строки от нуля.

first — (1|0) — Первая строка. Если первая строка, то выведется «1», если нет — «0».

last — (1|0) — Последняя строка.

odd — (1|0) — Четная строка.

activeClass — Класс активного ресурса.

classnames — Все CSS-классы одной строкой.

active — (1|0) — активный ресурс.

activeParent — ID активного родителя.

activeParent_snippet — Вывод сниппета из параметра &activeParentSnippet.

tv.любойTV — TV параметры.

parent.полеОтРодителя — поля от роделя (в т.ч. TV).

Пример вызова

[[!getProducts?
&parents=`5`
&includeTVs=`1`
&includeTVList=`price,image,producer,country`
&limit=`10`
&tpl=`product`
&where=`{"template":15}`
&tvFilters=`{"country":"Китай","producer":"Sony"}`
]]

Пример использования с getPage:

[[!getPage?
&cache=`1`
&elementClass=`modSnippet`
&element=`getProducts`
&parents=`5`
&includeTVs=`1`
&includeTVList=`price,image,producer,country`
&limit=`10`
&tpl=`product`
&where=`{"template":15}`
&tvFilters=`{"country":"Китай","producer":"Sony"}`
&pageFirstTpl=` <li><a [[+classes]] href="[[+href]]">Первая</a></li> `
&pageLastTpl=` <li><a [[+classes]] href="[[+href]]">Последняя</a></li> `
]]
<br />
<ul>
[[!+page. nav]]
</ul>

Пример вывода элементов из таблицы «modx_shop_content»
(см. http://modx-shopkeeper.ru/documentation/modx-revolution/tovaryi-iz-otdelnoj-tabliczyi.html):

[[!getPage?
&cache=`1`
&elementClass=`modSnippet`
&element=`getProducts`
&className=`shopContent`
&packageName=`shop`
&limit=`10`
&tpl=`product`
&where=`{"template":15}`
&pageFirstTpl=` <li><a [[+classes]] href="[[+href]]">Первая</a></li> `
&pageLastTpl=` <li><a [[+classes]] href="[[+href]]">Последняя</a></li> `
]]
<br />
<ul>
[[!+page.nav]]
</ul>

Пример вывода с кэшированием, кэшируется для всех страниц:

[[[email protected]_products?
&gp_cache=`1`
&cacheId=`top_products`
]]

Пример вывода с кэшированием, кэшируется для всех страниц + учитывается валюта:

[[[email protected]_products?
&gp_cache=`1`
&cacheId=`top_products_[[!+shk_currency]]`
]]

Пример вывода многоуровневого меню (замена Wayfinder). Подуровни выводятся только для текущей категории:

[[getProducts?
&parents=`4`
&where=`{"hidemenu":0,"template:<>":5}`
&tpl=`menuRowTpl`
&addSubItemCount=`1`
&activeParentSnippet=`getProducts?parents=[[+id]]&tpl=menuRowTpl2`
]]

menuRowTpl:

<li>
    <a href="[[~[[+id]]]]">[[+pagetitle]] ([[+subitemcount]])</a>
    [[+active:is=`1`:then=`
    <ul>
        [[+activeParent_snippet]]
    </ul>
    `:else=``]]
</li>

menuRowTpl2:

<li>
    <a href="[[~[[+id]]]]">[[+pagetitle]]</a>
</li>

getResources — getResources | Документация MODX

Что такое getResources? ¶

Фрагмент списка ресурсов и резюмирования общего назначения.

Требования¶

  • MODX Revolution 2.0.0-beta5 или новее
  • PHP5 или выше

История

getResources был впервые написан Джейсоном Кауардом (opengeek) и выпущен 30 июня 2009 года.

Загрузить¶

Его можно загрузить из менеджера MODX Revolution через Управление пакетами или из репозитория MODX Extras здесь: https: // modx.com / extras / package / getresources

Это НЕ замена Ditto, а скорее альтернативный компонент, который может выполнять некоторые из вещей, которые делают более специализированные компоненты, например, Ditto, Wayfinder, Breadcrumbs; в основном все, что выводит свойства для списка ресурсов (ранее документы в MODX Evolution).

Документацию и руководства по русскому языку можно найти здесь: http://modx.by/docs/modx-add-ons/getresources/

Использование¶

Фрагмент getResources можно вызвать с помощью тега:

  [[getResources]]
  

До версии 1.6.1-pl, вызовы без указанного свойства & tpl будут выводить массив каждого ресурса в наборе результатов и его полей. Начиная с версии 1.6.1-pl это поведение изменилось, и вам придется использовать «& debug = 1 », чтобы получить полный результат:

  [[getResources? & debug = `1`]]
[[getResources? & parent = `choose_an_id` & debug =` 1`]]
  

Доступные объекты

Свойства шаблона¶
.
Имя Описание Значение по умолчанию Добавлено в версии
тпл Имя фрагмента, служащего шаблоном ресурса. Если не указан, свойства выводятся для каждого ресурса
tplOdd Имя фрагмента, служащего шаблоном ресурса для ресурсов с нечетным значением idx (см. Свойство idx)
тпл Первый Имя блока, служащего шаблоном ресурса для первого ресурса
tpl Последний Имя блока, служащего шаблоном ресурса для последнего ресурса
tpl_N Имя фрагмента, служащего шаблоном ресурса для N-го ресурса, например & tpl_4 = tpl4th
тпл_нН Имя блока, служащего шаблоном ресурса для каждого N-го ресурса, например, & tpl_n4 = tpl4th будет применяться к любому элементу, кратному 4 1.4,1
tpl Состояние Определяет поле ресурса для сравнения с ключами, определенными в свойстве & conditionalTpls. Должно быть поле ресурса; не работает с шаблонными переменными. 1.5.0
условныйTpls Объект JSON, определяющий карту значений полей и связанных фрагментов tpl для использования, когда поле, определенное & tplCondition, соответствует значению : & conditionalTpls = {"1": "tplA", "2": "tplB", " 3 ":" tplC "} [ПРИМЕЧАНИЕ: tplOdd, tplFirst, tplLast, * и tpl_ {n} будут иметь приоритет над любыми заданными условными Tpls] 1.5,0
tplPath Необязательный каталог для поиска фрагментов на основе файлов при использовании @FILE assets_path + «elements / chunks /»
tplWrapper Имя фрагмента, служащего шаблоном оболочки для вывода [ПРИМЕЧАНИЕ. Не работает с toSeparatePlaceholder]. Заполнитель, куда вставляются элементы, — [[+ output]] . 1.6.0
wrapIfEmpty Если true, будет выводить оболочку, указанную в & tplWrapper, даже если вывод пуст. ложь 1.6.0
выходной сепаратор Необязательная строка для разделения каждого экземпляра tpl (разделитель) «\ n»
к заполнителю Если установлено, результат будет назначен этому заполнителю вместо того, чтобы выводить его напрямую.
для отдельных держателей Если установлено, КАЖДЫЙ результат будет назначен отдельному заполнителю, названному этим параметром, с суффиксом с порядковым номером (начиная с 0). 1.3.0

Около @FILE и @INLINE tpls :

Вы можете префикс любого свойства tpl с помощью @FILE или @INLINE, чтобы использовать фрагмент на основе файла или встроенную разметку соответственно.

  • @FILE — этот префикс позволяет вам предоставить файл вместо Chunk в базе данных в качестве tpl. Указанные вами путь и имя файла по умолчанию, если вы не укажете настраиваемое свойство tplPath , будут искать @FILE tpl относительно настроенного вами assets_path + elements / chunks / .
  • @INLINE — этот префикс позволяет указать разметку для использования в tpl непосредственно в значении свойства. Рекомендуется использовать это только при указании свойств tpl * в [Набор свойств], в противном случае любые заполнители в вашей встроенной разметке могут быть оценены до того, как содержимое будет передано в getResources, поскольку кешируемые вложенные теги в MODX Revolution оцениваются перед обработкой содержащий тег начинается. После этого должен быть пробел, например @INLINE [[+ pagetitle]]
Свойства выбора¶
. .
Имя Описание Значение по умолчанию Добавлено в версии
родители Разделенный запятыми список идентификаторов, выступающих в качестве родительских.Используйте -1, чтобы игнорировать родителей при указании _resources_to include. Если этого не сделать, getResources принимает & parent в качестве текущего ресурса и считывает оттуда своих потомков (плюс ресурсы, указанные в & resources = неожиданные результаты). текущий идентификатор ресурса
ресурсов Список идентификаторов, разделенных запятыми, для включения в результаты. Префикс идентификатора с тире, чтобы исключить ресурс из результата.
глубина Целочисленное значение, указывающее глубину поиска ресурсов от каждого родителя.Первый уровень ресурсов ниже родительского — глубина 10
твФильтры Может использоваться для фильтрации ресурсов по определенным значениям TV. Они вводятся как [( tvname ) ( operator )] ( value ). Есть два разделителя, которые можно использовать для объединения условий фильтрации. Вы можете использовать фильтры «ИЛИ», используя два символа вертикальной черты. Фильтр ИЛИ выбирает ресурсы, которые имеют одно из перечисленных значений TV. Смотрите ниже для получения дополнительной информации.
Сортировка Любое поле ресурса ( за исключением переменных шаблона. См. Ниже свойство «sortbyTV» ). Некоторые общие поля для сортировки — это publishon, menuindex, pagetitle и т. Д., Но для всех полей см. Документацию по ресурсам. Указывайте поля только с именем, не используя синтаксис тега. Обратите внимание, что при использовании таких полей, как шаблон, опубликованный и подобные для сортировки, они будут отсортированы по необработанным значениям, то есть по шаблону или идентификатору пользователя, а НЕ по их именам. Смотрите ниже для получения дополнительной информации. создано на
опубликовано на Изменено в 1.3,0
sortbyAlias ​​ Псевдоним запроса для поля сортировки
Сортировка сбежавших Экранирует имя поля, указанное в sortby
sortdir Порядок сортировки по DESC
sortbyTV Переменная шаблона для сортировки по 1. 2.0
sortdirTV Порядок сортировки при использовании sortbyTV DESC 1.2,0
sortbyTV Тип Укажите тип данных для сортировки ТВ. Возможные значения: строка, целое число, десятичное число, дата и время строка 1.3.0
предел Ограничивает количество возвращаемых ресурсов. Используйте 0 для получения неограниченных результатов. 5
смещение Смещение ресурсов, возвращенных критериями пропуска 0
где Выражение критериев в стиле JSON для создания дополнительных предложений where.См. Пример ниже. См. Display / xPDO20 / xPDOQuery. Где
контекст Разделенный запятыми список ключей контекста для ограничения результатов; если пусто, будут использоваться контексты для всех указанных родителей (все контексты, если указан 0)
Использование
и tvFilters

Для и tvFilters значение может выглядеть следующим образом:

  mytv == somevalue || mytv == othervalue
  

Вы также можете использовать фильтр «и» через запятую. Это обеспечит соблюдение всех условий.

  mytv == somevalue, othertv == othervalue
  

Для расширенной фильтрации вы также можете сгруппировать их. Важно знать, что сначала условия разделяются разделителем ИЛИ (||), а затем разделителем И (,). Итак, возьмем этот гипотетический пример:

  mytv == foo || mytv == bar, bartv == 3 || bartv == 1
  

Это отфильтрует ресурсы для удовлетворения одного из следующих условий:

  • mytv — это LIKE foo, или
  • mytv — это LIKE bar, И bartv — LIKE 3, или
  • bartv — это КАК 1

В приведенных выше примерах выполняется поиск точных значений.Вы также можете использовать знак процента (%) в качестве подстановочного знака. Например:

  mytv ==% a%
  

Соответствует любым ресурсам, у которых есть «a» в значении mytv.

  mytv == a%
  

Соответствует любым ресурсам, значение mytv которых начинается с «a»

  mytv ==% a
  

Соответствует любым ресурсам, значение mytv которых заканчивается на «a».

Вы также можете комбинировать это с разделителями ИЛИ (||) и И (,), описанными выше.

Важно знать, что эта функция смотрит на исходное значение переменной шаблона для конкретного ресурса. Это означает, что значение было явно установлено для ресурса и что оно не было обработано типом вывода переменной шаблона ( или значение по умолчанию в выпусках до 1.4.2-pl; это Release добавляет поддержку фильтрации, которая включает значения по умолчанию ). Так что, если у вас есть телевизор с автоматической пометкой, это означает, что исходное значение представляет собой список, разделенный запятыми, и он не разбивается на теги, как вы видите в диспетчере.

Новые операторы фильтров доступны в 1.4.2-pl :

Начиная с версии 1.4.2-pl getResources, есть ряд новых операторов сравнения, которые можно использовать при создании условий фильтрации. Кроме того, при использовании многих из этих новых операторов числовые значения сравнения автоматически преобразуются в числовые значения перед сравнением.

Вот список действующих операторов:

Оператор фильтра Оператор SQL Числовые значения CAST Банкноты
<=> <=> Есть NULL сейф равен
=== = Есть
! == ! = Есть
<> <> Есть
== КАК
! = НЕ НРАВИТСЯ
<< < Есть
<= <= Есть
= < = < Есть
>> > Есть
> = > = Есть
=> => Есть
Использование & sortby¶

Можно передать любое поле ресурса в качестве значения сортировки, например pagetitle , alias , Published on , menuindex и т. Д.

Вы можете отсортировать случайным образом, указав RAND (), например:

  & sortby = `RAND ()`
  

Начиная с версии 1.3.0, это также может быть массив JSON для сортировки по нескольким полям, например

  & sortby = `{" publishedon ":" ASC "," createdon ":" DESC "}`
  

Для сортировки в определенном порядке укажите список идентификаторов ресурсов, например

  & sortby = `ПОЛЕ (modResource.id, 4,7,2,5,1)`
  

То же самое возможно, если вы поместите отсортированные идентификаторы в переменную шаблона, например:

  & sortby = `ПОЛЕ (modResource.id, [[* templateVariable]]) `
  

В некоторых случаях вам необходимо (несколько парадоксально) указать также направление сортировки:

  & sortby = `ПОЛЕ (modResource.id, 4,7,2,5,1)` & sortdir = `ASC`
  
Другая недвижимость¶
.
Имя Описание Значение по умолчанию Добавлено в версии
показать Если true, также будут отображаться ресурсы, если они не опубликованы. 0
показать Удален Если true, также будут отображаться ресурсы независимо от того, были ли они удалены. 0
показатьHidden Если true, ресурсы будут отображаться независимо от того, скрыты ли они из меню. 0
скрыть Контейнеры Если установлено, ресурсы, помеченные как контейнер (isfolder), отображаться не будут. 0
includeContent Указывает, следует ли возвращать содержимое каждого ресурса в результатах. 0
включают телевизоры Указывает, должны ли значения TemplateVar быть включены в свойства, доступные для каждого шаблона ресурса. 0
включитьTVList Необязательный разделенный запятыми список имен TemplateVar для явного включения, если includeTVs равно 1 1.4,0
готовит телевизор Подготавливает значения TemplateVar, зависящие от медиа-источника. 1 1.5.0
подготовитьTVList Ограничивает подготовленные телевизоры до тех, которые указаны по имени в списке с разделителями-запятыми. 1.5.0
технологические телевизоры Указывает, должны ли значения TemplateVar отображаться так, как они были бы для резюмируемого ресурса. TemplateVars должны быть включены (см. IncludeTVs / includeTVList) для обработки. 0
процессTVList Необязательный разделенный запятыми список имен TemplateVar для явной обработки. Указанные здесь TemplateVars должны быть включены через includeTVs / includeTVList 1.4.0
tvPrefix Префикс для свойств TemplateVar телевизор.
idx Вы можете определить начальный idx ресурсов, который является свойством, которое увеличивается при отображении каждого ресурса. 1
первая Определите idx, который представляет первый ресурс 1
последняя Определите idx, который представляет последний ресурс. По умолчанию количество суммируемых ресурсов + первое — 1
всего Вар Определите ключ заполнителя, установленного getResources, указывающий общее количество ресурсов, которые будут выбраны , а не с учетом _limit_value. всего
отладка Если true, отправит запрос SQL в журнал MODX. ложь

Доступные заполнители¶

Заполнители, доступные для ваших блоков форматирования getResources, в основном зависят от ресурсов, которые вы повторяете.

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

Если в вашем ресурсе есть переменные шаблона, они будут иметь соответствующие заполнители (помните, что заполнители будут использовать префикс, определенный параметром & tvPrefix ).

Дополнительно имеются следующие заполнители:

Заполнитель Описание
[[+ idx]] Увеличивается с каждой итерацией, начиная с 1 (или значения, установленного параметрами и idx )

Примеры¶

Также см. Подраздел «Примеры» в этой документации для получения более подробных примеров и руководств.

Вывести список дочерних ресурсов текущего ресурса, используя блок myRowTpl:

  [[getResources? & родители = `[[* id]]` & tpl = `myRowTpl`]]
  

Вывести все ресурсы ниже ресурса с идентификатором 5, за исключением ресурса 10, используя блок myRowTpl:

  [[getResources? & parent = `5` & resources =` -10` & tpl = `myRowTpl`]]
  

Вывести только указанные ресурсы, используя блок myRowTpl:

  [[getResources? & parent = `-1` & resources =` 10,11,12` & tpl = `myRowTpl`]]
  

Выведите 5 самых последних опубликованных ресурсов под ресурсом с идентификатором ‘5’ с tpl ‘blogPost’:

.
  [[getResources? & parent = `5` & limit =` 5` & tpl = `blogPost` & includeContent =` 1`]]
  

Вывести список дочерних ресурсов текущего ресурса, основанный на шаблоне ресурса:

  [[getResources? & parent = `[[* id]]` & where = `{" template: = ": 8}` & tpl = `myRowTpl`]]
  

Вывести список дочерних ресурсов текущего ресурса, где ID шаблона ресурса равен 1 или 2:

  [[getResources? & parent = `[[* id]]` & where = `{" template: = ": 1," OR: template: = ": 2}` & tpl = `myRowTpl`]]
  

Вывести список дочерних ресурсов текущего ресурса, где ID шаблона ресурса — 1, 2 или 3 (вы не можете использовать одно и то же имя ключа более одного раза):

  [[getResources? & parent = `[[* id]]` & where = `{" template: IN ": [1,2,3]}` & tpl = `myRowTpl`]]
  

Отображать сообщение, если результаты не найдены (эквивалент «пустого» параметра в Ditto):

  [[getResources: default = `Ничего не найдено`? & родители = `[[* id]]` & tpl = `myRowTpl`]]
  

Пример использования встроенного Tpl

  [[getResources? & tpl = `@ INLINE 
  • [[+ pagetitle]]
  • `]]

    Обертывание getResources приводит к другой разметке (например, к свойству & outerTpl, которого нет для getResources из версии 1. 6.0, вы все еще можете сделать это так или использовать свойство & tplWrapper).

      [[getResources? ... & toPlaceholder = `results`]]
    [[+ results: notempty = `
      [[+ results]]
    `]]

    Отображение переменных шаблона с помощью getResources¶

    Чтобы сократить время получения, getResources по умолчанию не получает значения TV. Если вы хотите отображать телевизоры, вы должны включить следующие параметры:

      & includeTVs = `1` & processTVs =` 1`
      

    Вам также необходимо поставить перед всеми телевизорами префикс tv.или используйте этот параметр в своем теге сниппета:

      & tvPrefix = ``
      

    В блоке Tpl, который вы используете для отображения вывода getResources, используйте тег-заполнитель, подобный этому (но с именем вашего телевизора):

      [[+ tv.my_tv]]
      

    Использование getPage для разбивки на страницы¶

    В сочетании с getPage (или pdoPage) getResources позволяет выполнять мощную и гибкую разбивку на страницы на ваших страницах.

    Примеры¶

    Получите первые 10 ресурсов, отсортированных по опубликованным, под идентификатором ресурса 17, не более чем на 2 уровня в глубину, с tpl ‘blogListPost’, включая телевизоры и контент:

      [[! GetPage?
        & elementClass = `modSnippet`
        & element = `getResources`
        & родители = `17`
        & depth = `2`
        & limit = `10`
        & pageVarKey = `страница`
        & includeTVs = `1`
        & includeContent = `1`
        & tpl = `blogListPost`
    ]]
    
      [! + стр.nav]]

    и чанк blogListPost:

      
    [[+ опубликовано: strtotime: date = `% b% d% Y`]]

    [[+ pagetitle]] .......................................................

    Автор: [[+ createdby: userinfo = `username`]]

    [[+ интротекст]]

    Подробнее

    <час />

    Устранение неполадок

    Ничего не происходит¶

    Прежде чем удариться головой об стену, проверили ли вы, действительно ли это дополнение установлено на вашем сайте?

    Массив атрибутов сброшен¶

    Вы забыли включить параметр & tpl . Без параметра & tpl сниппет будет извлекать указанные ресурсы, но вы не сказали ему, как их форматировать. Убедитесь, что вы включили параметр & tpl в свой вызов сниппета, например

      [[! GetResources? & parent = `5` & limit =` 5` & tpl = `blogPost`]]
      

    Или, возможно, вы неправильно написали имя блока. Возможно, у вас ДЕЙСТВИТЕЛЬНО указаны и tpl , но существует ли этот кусок на самом деле? Если вы назовете несуществующий кусок, getResources не будет знать, как отформатировать ваши результаты.

    Или, даже если вы правильно указали параметр & tpl , вы могли случайно забыть амперсанд в одном из ваших _других_параметров. Например.

      limit = `5`
      

    приведет к сбою вызова сниппета и сбросу атрибутов. Правильный формат должен быть

      & limit = `5`
      

    Один и тот же ресурс выводится несколько раз

    (1. 2.2 и предыдущие версии)

    Если вы видите один и тот же ресурс в списке несколько раз, попробуйте опустить параметр & sortbyTV .

    Контента нет¶

    Вы извлекаете правильные ресурсы и видите, что некоторые_ результаты отформатированы правильно, но заполнители [[+ content]] ничего не содержат. В чем дело? Вы должны включить аргумент & includeContent = 1 , чтобы получить контент.

    Проблемы с кешированием при использовании tpl, tpl_N, tpl_nN, tplFirst, tplLast или tplOdd¶

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

    Общий фрагмент Tpl: [[$ GenericTplChunk]]

      
    Привет [[+ pagetitle]]

    Четвертый блок Tpl (tpl_nN): [[$ 4thTplChunk]]

      
    [[$ GenericTplChunk]]

    Если у вас возникли проблемы с пустыми или странными результатами, это связано с кешированием MODX. Вызов некэшированного фрагмента не сработает. Вы должны использовать трюк: фиктивный тег при вызове универсального блока.

      
    [[$ GenericTplChunk? & idx = `[[+ idx]]`]]

    Примечание: фрагмент не нужно называть некэшированным.

    См. По адресу: http://forums.modx.com/thread/43748/chunk-inside-getresources-template-not-processed-correctly

    См. Также

    Если вам нужно получить только одно поле из внешнего ресурса, попробуйте использовать getResourceField.

    Новые и улучшенные популярные сообщения MODX Счетчик посещений

    * ОБНОВЛЕНИЕ [2019/01]: есть новое дополнение MODX, которое разработано с нуля, чтобы быть более точным и гибким — способным обрабатывать вариант использования «Самые популярные страницы» плюс многое другое.Посмотрите здесь.

    Если вы когда-либо хотели отобразить список самых популярных страниц или сообщений в блоге на своем сайте MODX CMS, вы либо написали свой собственный фрагмент PHP, либо использовали этот метод с помощью HitsPage. Но теперь в городе появился новичок …

    Просмотров

    Hits написан выпускником основной команды MODX @jpdevries. Его отличие от HitsPage заключается в том, что вместо хранения обращений на телевизоре используется настраиваемая таблица базы данных. Реализация проста и проста: вызовите сниппет в одну сторону, и попадания будут регистрироваться по идентификаторам ресурсов; назовите его по-другому, и он выводит идентификаторы с наибольшим количеством совпадений.Подайте это в getResources, и все готово.

    Получить

    • Вы можете установить его через Управление пакетами в MODX Revolution.
    • Вы также можете скачать пакет здесь
    • В официальных документах для него еще нет документации, но сам сниппет дает вам все необходимые примеры использования. Одно предостережение: начиная с версии 1.2.0 есть несколько исправлений, поэтому я подробно расскажу о настройке здесь.

    Запишите свои хиты

    Эта часть до смешного проста. Где-нибудь в шаблоне каждой страницы, на которой вы хотите записывать обращения, вызовите сниппет следующим образом:

      [[! Попаданий? & punch = `[[* id]]`]]
      

    Вот и все. Это записывает попадание для текущего ресурса каждый раз, когда он запрашивается.

    Показать самые популярные страницы

    Для этого есть два (очень простых) шага. Сначала вы снова вызываете Hits Snippet, на этот раз чтобы перечислить идентификаторы с наибольшим количеством совпадений:

      [[Попадания?
        & родители = `2,6,10`
        & limit = `3`
        & outputSeparator = `,`
        & chunk = `hitID`
        & toPlaceholder = `hits`
    ]]
      
    Разбейте его:
    • & parent = `2,6,10` » Произвольный список идентификаторов ресурсов, разделенных запятыми, дочерние ресурсы которого будут запрашиваться на предмет совпадений.Это позволяет ограничить объем конкурса популярности определенными разделами сайта. Если вы оставите его пустым, он будет использовать родительский элемент ресурса, для которого вы в настоящее время вызываете сниппет.
    • & limit = `3` » Это просто указывает, сколько результатов нужно вернуть.
    • & outputSeparator = `,` »Если вы загружаете результаты в другой сниппет, как мы, это делает вывод через запятую.
    • & chunk = `hitID` » Это выходной шаблон (см. Ниже).
    • & toPlaceholder = `hits` » Это отправляет результаты в заполнитель, который мы можем использовать в нашем вызове getResources (опять же, см. Ниже).

    Блок «hitID» содержит только это: [[+ hit_key]] . Это идентификатор запрашиваемого ресурса. Вызов getResources теперь будет «получать» ресурсы с наибольшим количеством совпадений, например:

      [[getResources?
        & родители = `-1`
        & resources = `[[+ хиты]]`
        & tpl = `myPostTpl`
    ]]
      
    Разбейте его:
    • & parent = `-1` » Это говорит getResources даже не искать родителей.Hits Snippet уже сделал это за нас. У этого есть приятный побочный эффект, заключающийся в том, что запрос getResources выполняется довольно быстро (подробнее об этом позже).
    • & resources = ` [[+ hits]] ` »Нам действительно нужно сообщить getResources, какие ресурсы« получить ». Это свойство заполняется значением, возвращаемым фрагментом Hits, потому что мы поместили туда заполнитель [[+ hits]] . Так что он получит самые популярные ресурсы.
    • & tpl = `myPostTpl` » Обязательное свойство getResources — фрагмент, используемый в качестве выходного шаблона.

    И готово! Нам даже не нужно указывать getResources ограничивать результаты, потому что Hits Snippet предоставляет только необходимое количество идентификаторов для свойства & resources. Есть еще несколько вариантов для Hits, например, если вы хотите перечислить наименьших популярных страниц, или если вы хотите компенсировать результаты, чтобы вы показывали несколько «средних» популярных страниц;)

    Обратной стороной этой настройки является то, что, поскольку она не сохраняет значения в телевизоре, вы не можете использовать ТВ-фильтры getResources, поэтому она немного менее гибкая. Однако большим плюсом является то, что он значительно быстрее — по моим тестам на 20% быстрее, но потенциально больше. Это потому, что все эти телевизионные запросы на самом деле довольно медленные. Эффективно спроектированный нестандартный стол по скорости выигрывает у стола, рассчитанного на бесконечную конфигурацию. Иногда это цена гибкости.

    Вот и все. А теперь сделайте что-нибудь потрясающее с MODX — вот для чего он был создан: D

    Выходной фильтр / модификаторы — синтаксис тега

    Что такое фильтры? ¶

    Фильтры

    в Revolution позволяют управлять способом представления или анализа данных в теге.Они позволяют изменять значения внутри ваших шаблонов.

    Входной фильтр

    Выходной фильтр¶

    В Revolution выходной фильтр применяет один или несколько серий выходных модификаторов, которые ведут себя аналогично вызовам PHx в MODX Evolution, за исключением того, что они встроены в ядро. Синтаксис выглядит так:

      [[элемент: модификатор = `значение`]]
      

    Их также можно объединять в цепочку (выполнять слева направо):

      [[элемент: модификатор: anothermodifier = `value`: andanothermodifier: stillanother =` value2`]]
      

    Вы также можете использовать их для изменения вывода сниппета; обратите внимание, что модификатор идет после имени фрагмента и перед вопросительным знаком, e.грамм.

      [[mySnippet: modifier = `значение`? & mySnippetParam = `something`]]
      

    Если у вас более длинный код в операторе : then = `...`: else = `...` и вы хотите сделать его более читабельным, разместив его на нескольких строках, это нужно сделать следующим образом:

      [[+ заполнитель: is = `0`: then =`
     // код
    `: else =`
     // код
    `]]
      

    Модификаторы вывода¶

    В следующей таблице перечислены некоторые из существующих модификаторов и показаны примеры их использования. Хотя приведенные ниже примеры являются тегами-заполнителями, модификаторы вывода можно использовать с любым тегом MODX. Убедитесь, что используемый заполнитель действительно принимает данные.

    Модификаторы условного вывода¶

    Модификатор Описание Пример
    если, ввод если — задает дополнительное условие. input — добавляет данные для обработки в тег [[* id: is = `1`: and: if =` [[* id]] `: ne =` 2`: then = `Yes`: else =` No`]]
    или Может использоваться для объединения модификаторов вывода в строку вместе с отношением «ИЛИ». [[+ numbooks: is = `5`: or: is =` 6`: then = `Есть 5 или 6 книг!`: Else = `Не уверен, сколько книг`]]
    и Может использоваться для объединения модификаторов вывода в строку вместе с отношением «И». [[* numbooks: is = `1`: and: if =` [[* id]] `: ne =` 2`: then = `Yes`: else =` No`]]
    равно, равно, равно, равно, есть, уравнение Сравнивает с переданным значением и переходит, если оно остается. Используется с then и else [[+ numbooks: isequalto = `5`: then =` Всего 5 книг! `: Else =` Не уверен, сколько книг`]]
    notequalto, notequals, isnt, isnot, neq, ne Сравнивает с переданным значением и переходит к следующему, если оно не то же самое.Используется с then и else [[+ numbooks: notequalto = `5`: then =` Not sure how many books`: else = `Всего 5 книг!`]]
    большеthanorequalto, equalorgreaterthen, ge, например, isgte, gte Сравнивает с переданным значением и продолжает, если оно больше или равно значению. Используется с «then» и «else». [[+ numbooks: gte = `5`: then =` Есть 5 книг или больше 5 книг`: else = `Есть меньше 5 книг`]]
    isgreaterthan, morethan, isgt, gt Сравнивает с переданным значением и переходит к следующему этапу, если оно больше значения. Используется с «then» и «else». [[+ numbooks: gt = `5`: then =` Есть более 5 книг`: else = `Есть менее 5 книг`]]
    equaltoorlessthan, lessthanorequalto, el, le, islte, lte Сравнивает с переданным значением и продолжает, если оно меньше или равно значению. Используется с «then» и «else». [[+ numbooks: lte = `5`: then =` Есть 5 или меньше 5 книг`: else = `Есть больше чем 5 книг`]]
    islowerthan, islessthan, lowerthan, lessthan, islt, lt Сравнивает с переданным значением и переходит к следующему шагу, если оно меньше значения.Используется с «then» и «else». [[+ numbooks: lt = `5`: then =` Есть меньше 5 книг`: else = `Есть больше 5 книг`]]
    содержит Проверяет, содержит ли значение переданную строку. [[+ author: contains = `Samuel Clemens`: then =` Mark Twain`]]
    не содержит Проверьте, не содержит ли значение переданную строку. [[+ author: containsnot = `Samuel Clemens`: then =` Somebody Else`]]
    in, IN, inarray, inArray Проверить, находится ли значение в массиве (через запятую) [[+ id: in = `5,15,22`: then =` Yes in array`]] `
    скрыть Проверит предыдущие условия и скроет элемент, если условия были выполнены. [[+ numbooks: lt = `1`: hide]]
    показать Проверит предыдущие условия и покажет элемент, были ли они выполнены. [[+ numbooks: gt = `0`: show]]
    , затем Условное использование. [[+ numbooks: gt = `0`: then =` Уже доступно! `]]
    еще Условное использование вместе с then. [[+ numbooks: gt = `0`: then =` Уже доступно! `: Else =` Извините, в настоящее время распроданы.`]]
    выбрать Вывести замену, если значение находится в списке значений перед знаком равенства. В противном случае результат будет пустым. [[+ numbooks: select = `0 = Value 0 & 1 = Value 1 & 2 = Value 2`]]
    член, член, мес Проверяет, является ли пользователь членом указанной группы (групп). [[+ modx.user.id: memberof = `Administrator`]]

    Модификаторы вывода строки¶

    PHP .
    Модификатор Описание Пример
    кот Добавляет значение параметра (если не пусто) к входному значению [[+ numbooks: cat = `books`]]
    после, добавить Добавляет значение параметров к входному значению (если оба не пустые). Добавлено в 2.6.0. [[+ totalnumber: after = `total`]]
    перед, добавить Добавляет значение параметров к входному значению (если оба не пустые). Добавлено в 2.6.0. [[+ booknum: before = `book #`]]
    lcase, нижний регистр, strtolower Преобразует строки в нижний регистр. Похож на PHP strtolower [[+ title: lcase]]
    верхний регистр, верхний регистр Преобразует строки в верхний регистр.Подобно PHP strtoupper [[+ заголовок: ucase]]
    ucwords Преобразует первую букву слова в верхний регистр. Подобно PHP ucwords [[+ title: ucwords]]
    ucfirst Преобразует первую букву строки в верхний регистр. Подобно PHP ucfirst [[+ name: ucfirst]]
    высота, высота Заменяет любой символ, имеющий объект HTML, на этот объект.Подобно PHP htmlentities. Использует текущее значение, установленное системой modx_charset с флагом ENT_QUOTES [[+ email: htmlent]]
    esc, побег Безопасно экранирует символьные значения с помощью регулярного выражения и str_replace. Также экранирует [,] и [[+ email: escape]]
    полоса Заменяет все разрывы строк, табуляции и множественные пробелы одним пробелом. [[+ textdocument: strip]]
    stripString Удаляет строку указанного значения [[+ name: stripString = `Mr.`]]
    заменить Заменяет одно значение другим [[+ pagetitle: replace = `Mr. == Mrs.`]]
    striptags, stripTags, notags, strip_tags Удаляет HTML-теги из ввода. При необходимости принимает значение, указывающее, какие теги разрешить. Подобно PHP strip_tags [[+ code: strip_tags = `]] ​​
    stripmodxtags Удаляет теги MODX из ввода.(Добавлено в v2.7) [[+ code: stripmodxtags]]
    длина, длина, длина Подсчитывает длину переданной строки. Подобно PHP strlen [[+ длинная строка: strlen]]
    реверс, стрррев Переворачивает ввод, символ за символом. Подобно PHP strrev [[+ зеркальный текст: обратный]]
    перенос текста Вставляет символ новой строки после заданного количества символов.Подобно переносу слов в PHP. Принимает необязательное значение для установки позиции переноса слов. [[+ bodytext: wordwrap = `80`]]
    перенос слов Вставляет символ новой строки после установленного количества символов, независимо от границ слова. Подобно переносу слов в PHP, с включенной функцией вырезания слов. Принимает необязательное значение для установки позиции переноса слов. [[+ bodytext: wordwrapcut = `80`]]
    предел Ограничивает строку определенным количеством символов.По умолчанию 100. [[+ description: limit = `50`]]
    многоточие Добавляет многоточие в строку и обрезает ее, если она длиннее определенного количества символов. В качестве точек останова используются только пробелы. По умолчанию 100. [[+ description: ellipsis = `50`]]
    тег Отображает необработанный элемент без тега:. Полезно для документации. [[+ showThis: tag]]
    tvLabel Отображение метки с телевизора, полезной при использовании флажков, флажков и т. Д., Где вы используете `Label == 1
    математика Возвращает результат расширенного вычисления (дорого для процессора.не рекомендуется) Убрано в Revolution 2.2.6. [[+ blackjack: add = `21`]]
    прибавить, прибавить, прибавить Возвращает ввод, увеличенный на опцию (по умолчанию: +1) [[+ загрузки: incr]]
    вычитание, уменьшение, убывание Возвращает ввод, уменьшенный на опцию (по умолчанию: -1) [[+ countdown: decr]] [[+ moneys: subtract = `100`]]
    умножить, mpy Возвращает ввод, умноженный на опцию (по умолчанию: * 2) [[+ trifecta: mpy = `3`]]
    деление, деление Возвращает ввод, разделенный на опции (по умолчанию: / 2). Не принимает 0. [[+ рейтинг: div = `4`]]
    модуль, модуль Возвращает модуль параметра при вводе (по умолчанию:% 2, возвращает 0 или 1) [[+ номер: mod]] или [[+ number: mod = `3`]]
    ifempty, default, empty, isempty Возвращает входное значение, если пусто [[+ name: default = `anonymous`]]
    notempty,! Empty, ifnotempty, isnotempty Возвращает введенное значение, если не пусто [[+ name: notempty = `Привет [[+ name]]!`]]
    nl2br Преобразует символ новой строки (\ n) в элемент html.Используйте это, если вы вводите ввод и думаете, что в нем должны быть новые строки, а их нет. Подобно PHP nl2br. [[+ textfile: nl2br]]
    дата Форматирует временную метку unix в другой формат. Подобно PHP strftime. Значение — это формат. См. Раздел «Форматы даты». [[+ год рождения: date = `% Y`]]
    strtotime Преобразует строку даты в метку времени unix. Полезно сочетать это с фильтром вывода даты.Подобно PHP strtotime. Принимает свидание. См. Раздел «Форматы даты». [[+ thetime: strtotime]]
    fuzzydate Возвращает красивый формат даты с фильтрами вчера и сегодня. Принимает свидание. [[+ createdon: fuzzydate]]
    назад Возвращает дату в красивом формате в секундах, минутах, неделях или месяцах назад. Принимает дату (strtotime). [[+ createdon: date = `% d-% m-% Y`: ago]]
    мкр5 Создает хэш MD5 входной строки.Подобно PHP md5. [[+ пароль: md5]]
    cdata Оборачивает текст тегами CDATA [[+ content: cdata]]
    информация пользователя Возвращает запрошенные данные пользователя. Элемент должен быть идентификатором modUser ID. Поле значения — это столбец, который нужно захватить, например ФИО, электронная почта. См. Примеры ниже. [[+ modx.user.id: userinfo = `username`]]
    зарегистрирован в Возвращает истину, если пользователь аутентифицирован в этом контексте. [[+ modx.user.id: isloggedin]]
    не зарегистрирован в Возвращает истину, если пользователь не аутентифицирован в этом контексте. [[+ modx.user.id: isnotloggedin]]
    к заполнителю Помещает входное значение в переданный заполнитель. Не предотвращает вывод значения TV, поэтому добавьте [[* someTV: toPlaceholder = `placeholder`: notempty =` `]] , если вы не хотите выводить значение самого TV. [[* someTV: toPlaceholder = `placeholder`]]
    cssToHead Поместите элемент , где входное значение помещается внутри атрибута href. Использует modX.regClientCSS. [[+ cssTV: cssToHead]]
    htmlToHead Вставьте блок HTML-кода в заголовок страницы перед . Использует modX.regClientStartupHTMLBlock [[+ htmlTV: htmlToHead]]
    htmlToBottom Вставьте HTML-код в конце страницы перед .Использует modX.regClientHTMLBlock. [[+ htmlTV: htmlToBottom]]
    jsToHead Вставьте код JS (или ссылку) в заголовок страницы перед . Использует modX.regClientStartupScript. [[+ jsTV: jsToHead]]
    jsToBottom Вставьте код JS (или ссылку) в конце страницы перед . Использует modX.regClientScript. [[+ jsTV: jsToBottom]]
    urlencode Преобразует ввод в удобную для URL строку, аналогично тому, как это делала бы форма HTML. Похож на urlencode [[+ mystring: urlencode]]
    urldecode Преобразует ввод из строки, удобной для URL-адресов. Подобно PHP urldecode [[+ myparam: urldecode]]
    filterPathSegment Добавлено в 2.7. Преобразует ввод в удобную для URL строку с помощью того же механизма, который превращает заголовок страницы в псевдоним, включая транслитерацию, если она включена. Полезно для настраиваемых URL-адресов. [[+ pagetitle: filterPathSegment]]

    Кэширование¶

    В общем, любое содержимое в заполнителе, которое, по вашему мнению, может динамически изменяться , должно быть некэшировано.Например:

      [[+ placeholder: default = `Значение по умолчанию!`]]
      

    Это означает, что иногда может быть пустым, а иногда и нет. Зачем вам это нужно кешировать? Это устранило бы точку модификатора вывода.

    Иногда модификаторы вывода могут использоваться для кэшированного заполнителя — но только если вы вызываете сниппет, который также устанавливает их в кэш. В противном случае вы выполняете нелогичный маневр — пытаетесь статически кэшировать то, что никогда не должно было быть статичным.

    В общем, правило таково: если вы устанавливаете заполнитель в некэшированном фрагменте, этот заполнитель также должен быть некэширован, если вы ожидаете, что содержимое заполнителя будет отличаться.

    Использование модификатора вывода со свойствами тега¶

    Если у вас есть свойства в теге, вы захотите указать эти после модификатора:

      [[! GetResources: default = `Извините, по вашему запросу ничего не найдено.`?
        & tplFirst = `blogTpl`
        & родители = `2,3,4,8`
        & tvFilters = `blog_tags ==% [[! tag: htmlent]]%`
        & includeTVs = `1`
    ]]
      

    Создание настраиваемого модификатора вывода¶

    Кроме того, сниппеты могут использоваться как настраиваемые модификаторы. Просто введите имя сниппета вместо модификатора. Пример фрагмента с именем makeExciting, который добавляет переменное количество восклицательных знаков:

      [[* pagetitle: makeExciting = `4`]]
      

    Этот вызов переменной документа с модификатором вывода передаст эти свойства сниппету:

    Param Значение Пример результата
    вход Значение элемента. Значение [[* pagetitle]]
    варианты Любое значение, переданное модификатору. ‘4’
    жетон Тип родительского элемента. * (токен на pagetitle )
    название Имя родительского элемента. название страницы
    тег Полный родительский тег. [[* pagetitle: makeExciting = `4`]]

    Вот пример реализации нашего фрагмента makeExciting:

      $ defaultExcitementLevel = 1;
    $ result = $ input;
    if (isset ($ options)) {
        $ numberOfExclamations = $ options;
    } еще {
        $ numberOfExclamations = $ defaultExcitementLevel;
    }
    for ($ i = $ numberOfExclamations; $ i> 0; $ i--) {
        $ результат = $ результат. '!';
    }
    вернуть результат $;
      

    Возвращаемое значение вызова будет тем, что возвращает фрагмент. В нашем примере результатом будет значение переменной документа pagetitle с четырьмя восклицательными знаками.

    Исходное входное значение будет возвращено, если фрагмент вернет пустую строку.

    Объединение (несколько выходных фильтров) Fil

    Хорошим примером связывания может быть форматирование строки даты в другом формате, например:

      [[+ mydate: strtotime: date = `% Y-% m-% d`]]
      

    Прямой доступ к таблице modx_user_attributes в базе данных с использованием модификаторов вывода вместо сниппета может быть выполнен просто с помощью модификатора userinfo.Выберите соответствующий столбец в таблице и укажите его как свойство модификатора вывода, например:

      Внутренний ключ пользователя: [[! + Modx.user.id: userinfo = `internalKey`]] 
    Имя пользователя: [[! + Modx. user.id: userinfo = `username`]]
    Полное имя: [[! + Modx.user.id: userinfo = `fullname`]]
    Электронная почта: [[! + Modx.user.id: userinfo = `email`]]
    Телефон: [[! + Modx.user.id: userinfo = `phone`]]
    Мобильный телефон: [[! + Modx.user.id: userinfo = `mobilephone`]]
    Факс: [[! + Modx.user.id: userinfo = `fax`]]
    Дата рождения: [[! + Modx.user.id: userinfo = `dob`: date =`% Y-% m-% d`]]
    Пол: [[! + Modx.user.id: userinfo = `пол`]]
    Страна: [[+ modx.user.id: userinfo = `country`]]
    Состояние: [[+ modx.user.id: userinfo = `state`]]
    Почтовый индекс: [[+ modx.user.id: userinfo = `zip`]]
    Фото: [[+ modx.user.id: userinfo = `photo`]]
    Комментарий: [[+ modx.user.id: userinfo = `comment`]]
    Пароль: [[+ modx.user.id: userinfo = `password`]]
    Пароль кеша: [[+ modx.user.id: userinfo = `cachepwd`]]
    Последний вход: [[+ modx.user.id: userinfo = `lastlogin`: date =`% Y-% m-% d`]]
    Логин: [[+ modx.user.id: userinfo = `thislogin`: date =`% Y-% m-% d`]]
    Количество входов: [[+ modx. user.id: userinfo = `logincount`]]

    [[! + Modx.user.id]] по умолчанию — идентификатор текущего пользователя, вошедшего в систему. Конечно, вы можете заменить его на [[* createdby]] или другое поле ресурса или заполнители, которые возвращают числовой идентификатор, представляющий пользователя.

    Обратите внимание, что идентификатор пользователя и имя пользователя уже доступны по умолчанию в MODX, поэтому вам не нужно использовать модификатор «userinfo»:

      [[! + Modx.user.id]] - печатает идентификатор
    [[! + modx.user.username]] - выводит имя пользователя.
      

    Скорее всего, вы захотите назвать их некэшированными (см. Примечание о кешировании выше), чтобы предотвратить непредвиденные результаты.

    См. Также

    фрагментов MODX для разрешения списка ресурсов

    getResources: фрагмент кода MODX для разрешения списка ресурсов

    getResources — это премьера Джейсона Кауарда (псевдоним opengeek) 30 июля 2009 г.

    Avec предварительные версии на 1.6.1-pl вы можете использовать snippet sans mettre de tpl, vous aviez en retour un tableau avec les données récoltés. Замените версию 1.6.1 на новый параметр «& debug =` 1 `» для того, чтобы увидеть живую таблицу.

    Avec предварительные версии на 1.6.1-pl вы можете использовать snippet sans mettre de tpl, vous aviez en retour un tableau avec les données récoltés. Замените версию 1.6.1 на новый параметр «& debug =` 1 `» для того, чтобы увидеть живую таблицу.

     [[getResources? & parent = `chosissez un identifiant ID` & debug =` 1`]] 

    @FILE и @INLINE tpls

    Вы можете использовать утилиту @FILE и @INLINE в параметрах «& tpl» для использования в классическом месте Chunk или метре управления HTML-кодом в приложении сниппета getResources. Plus d’informations dans le tableau des propriétés.

    Права собственности на тему:

    Nom Описание Valeur par défaut Ajouté depuis la version
    tpl Nom du Chunk qui va servir de code for afficher le résultat de chaque ressource.
    tplOdd Nom du Chunk qui va servir de code pour afficher le résultat de chaque ressource impair (voir la propriété idx).
    тпл Первый Nom du Chunk qui va servir de code for afficher le primeresultat de ressource.
    tpl Последний Nom du Chunk qui va servir de code for afficher le dernier ressource.
    tpl_N Nom du Chunk qui va servir de code for afficher le n ressource, par example & tpl_4 = `tpl4th` pour le quatrième resultat.
    тпл_нН Nom du Chunk qui va servir de code pour afficher le n ressultat de ressource, par example & tpl_n4 = `tpl4th` pour les resultatisible par 4. 1.4.1
    tpl Состояние Définissez le champ de ressource qui va servir a comparer dans le paramètre & conditionalTpls. Это действительно чемпион по ресурсам, он функционирует с переменными моделями. 1.5.0
    условныйTpls Объекты JSON, определяющие параметры чемпионов и фрагментов, связаны с использованием ресурсов, соответствующих определенным условиям : & conditionalTpls = `{» 1 «:» tplA «,» 2 «:» tplB » , «3»: «tplC»} `
    [НОМЕР: tplOdd, tplFirst, tplLast, * и tpl_ {n} va prendre le dessus sur toute définition conditionnelle]
    1.5,0
    tplPath Un répertoire en option pour chercher des morceaux (chunk) à base de fichiers lorsque vous utilisez @FILE assets_path + «elements / chunks /»
    tplWrapper Nom d’un morceau (кусок), служащий модели контекста (обертка) для вылета [ПРИМЕЧАНИЕ: Ne fonctionne pas avec deux Placeholder séparés]. L’espace réservé où les article sont insérés est. 1. 6,0
    wrapIfEmpty Si cela est vrai, la sortie sera de enveloppé dans un concneur dans & tplWrapper même si la sortie est vide. ложь 1.6.0
    выходной сепаратор Опциональная цепочка для крашеных масел для запасного чака, экземпляра tpl. «\ n»
    к заполнителю Si elle est définie, seraffectée au résultat à cet espace (заполнитель), оставлен в другом направлении.
    для отдельных держателей Si elle est définie, attribuera à chaque résultat à un espace (заполнитель) réservé séparé nommé par ce paramètre suffixé avec un numéro séquentiel (à partir de 0). 1.3.0

    @ FILE- Ce prefixe vous permet de fournir un fichier au lieu d’un Chunk dans la base de donnéescom tpl. Le chemin et le nom que vous spécifiez par défaut, sauf si vous spécifiez un chemin personalisé tplPathproperty, найдите @FILE tpl на основе конфигурации ASSETS_PATH + «elements / chunks /».

    @ INLINE- Эта предварительная версия позволяет использовать все необходимые ресурсы для использования в приложении сниппета getResources. Рекомендуемая область использования, она требует спецификации прав собственности на [Set Property], имеет резервные запасы в соответствии с ценностями, полученными при сохранении ресурсов, передаваемых в кэш, и получаемые ресурсы. в MODX Revolution ценится без особого «тега».Пример [[* pagetitle]].

    Nom Описание Valeur par défaut Ajouté depuis la version
    родители список ограниченных идентификаторов для родителей. Используйте -1 для игнорирования родительского элемента для идентификатора 1. Если вы хотите, чтобы он защищал ваши ресурсы, getResources список активных ресурсов. текущий идентификатор ресурса
    ресурсов Liste séparé par des virgules d’id à inclure dans le résultat.Préfixé un id avec un — (moins) pour l’exclure du résultat.
    глубина Valeur entière indiquant la profondeur à rechercher des ressources de chaque parent. Premier niveau de ressources sous parent est la profondeur. Пример: 1 для детей и 2 детей для детей. 10
    твФильтры Можно использовать для фильтрации ресурсов с определенными валентными моделями переменной модели (телевизор).Ceux-ci sont Entrés Com [( nom de la variable de modèle ) ( operatingur )] ( valeur ). Или два дополнительных устройства, которые могут использовать фильтр для объединения условий фильтрации.

    Фильтры Vous Pouvez Avoir «OU» (OR) на трубе с двумя символами (||). Un filter OU récupère des ressources qui a l’une des valeurs de variable de modèle (tv) enumérées.

    mytv == somevalue || mytv == othervalue

    Вы можете использовать фильтр «ET» (AND) и использовать его без исключения.Cela fera en sorte que toutes les soient remplies.

    mytv == somevalue, othertv == othervalue

    Pour le filtrage avancé, vous pouvez également regrouper celle-ci. Важнейшие условия для выполнения условий, связанных с функцией отдельного «OU» (OR) (||), и после этого разделителя «ET» (AND) (,). Prenons Donc cet example hypothétique:

    . mytv == foo || mytv == bar, bartv == 3 || bartv == 1

    Выберите фильтр для ресурсов для ответа на суверенные условия:

    • mytv est égale a foo, ou
    • mytv est égale a bar ET bartv est égale a 3, ou
    • bartv est égale a 1
      Les instance ci-dessus recherche pour les valeurs exactes.Vous pouvez également utiliser le signe de pourcentage (%) com joker. Пример по номиналу:
    mytv ==% a%

    Соответствует всем ресурсам, которые являются «a» de la valeur de «mytv» la variable de modèle.

    mytv == a%

    Соответствует всем ресурсам, которые имеют значение «mytv» для переменной модели, которая начинается с «a»

    mytv ==% a

    Соответствует всем ресурсам, которые имеют значение «mytv» для переменной модели, которая является термином «a».

    Вы также можете комбинировать это с разделителями ИЛИ (||) и И (,), описанными выше.Vous pouvez également combiner cela avec un «OU» (OR) (||) et «ET» (AND) (,) délimiteurs explocé ci-dessus.

    est important de savoir que cette fonction regarde la valeur brute d’une variable de modèle pour une ressource spécifique. Cela signifie que la valeur a été explicitement définie pour la ressource , et qu’il n’a pas été traité par un type de variable modèle de sortie ( ou est la valeur par défaut dans à les antérieries) 1.4,2-пл; Эта версия содержит поддержку для фильтрации, которая содержит дефолтные ценности ). Donc, si vous avez une «Balise automatique» (tv), cela signifie que la valeur brute est une liste délimitée par des virgules, et il ne peut être séparer dans les balises, com vous le voyez dans le gestionnaire.

    Nouveau opérateur de filter depuis la version 1.4.2-pl
    Depuis la version 1. 4.2-pl de getResources, или некий ряд новых операторов сравнения для использования в создании условий фильтрации.En outre, lorsque vous utilisez beaucoup de ces nouveaux opérateurs, les valeurs de compare numériques sont automatiquement casté (CAST), la valeurs de la variable de la modèle numérique à avant la compare. Voici une liste des opérateurs valides:
    Фильтр оператора Оператор SQL Числовые значения CAST Примечания
    <=> <=> Есть NULL сейф равен
    === = Есть
    ! == ! = Есть
    <> <> Есть
    == КАК
    ! = НЕ НРАВИТСЯ
    << < Есть
    <= <= Есть
    = < = < Есть
    >> > Есть
    > = > = Есть
    => => Есть
    Сортировка Tous les champs de ressources ( без переменных моделей. Voir ci-dessous pour la propriété ‘sortbyTV’ ). Некоторые сообщества не опубликованы, индекс меню, название страницы и т. Д., Есть документация по ресурсам для всех чемпионов. Специально для полей с условным обозначением и без использования синтаксиса языка. Обратите внимание на использование шаблонов champs tels que template, опубликованных и «лайков» для триера, elle sera triée sur les valeurs brutes, de sorte que le modèle или l’ID utilisateur et pas leurs noms.

    Vous pouvez également trier au hasard en spécifiant RAND (), по запросу:

    & sortby = `RAND ()`

    Depuis la version 1.3.0, окончание австралийской таблицы в формате JSON для более крупных чемпионатов, номинал

    & sortby = `{» опубликованный «:» ASC «,» createdon «:» DESC «}`

    Pour trier dans un ordre spécifique, spécifiez une ressource liste d’id, instance

    & sortby = `ПОЛЕ (modResource.id, 4,7,2,5,1)`

    La même выбрала из возможных si vous mettez les ID triés dans une variable de modèle, начиная с:

    & sortby = `ПОЛЕ (modResource. id,)`

    Dans sures cas, vous devez (un peu contre-intuitif) spécifier la direction de tri ainsi:

    & sortby = `ПОЛЕ (modResource.id, 4,7,2,5,1) `& sortdir =` ASC`

    создано на
    опубликовано на Modifié depuis la versio, 1.3.0
    sortbyAlias ​​ псевдоним для чемпионов по сортировке от
    Сортировка сбежавших Échappe le nom du champ spécifié dans sortby
    sortdir Направление де три (восходящий или нисходящий) DESC
    sortbyTV Изменяемая модель для триера 1.2,0
    sortdirTV Direction de trie (восходящий или нисходящий) quand vous utilisez une variable de modèle DESC (потомок) 1.2.0
    sortbyTV Тип Spécifiez le type de données de la TV sortby. Les valeurs possibles sont string, integer, decimal, datetime строка 1.3.0
    предел Limite le nombre de ressources renvoyé. Utiliser `0` безлимитный результат. 5
    смещение Un décalage des ressources retournées. 0
    где Одно выражение стиля JSON для критериев для построения дополнительных предложений. Voir ci-dessous pour un example. Voir xPDOQuery
    контекст Список кликов контекста для ограничителя результатов, ограниченных по действию; si elle est vide, les contexts pour tous les parent spécifiés seront utilisés (tous les context si 0 est spécifié).

    Autres propriétés

    Nom Описание Valeur par défaut Ajouté depuis la version
    showUnpublished Si cela est vrai, montrera également des ressources si elles ne sont pas publiées. 0
    показать Удален Si cela est vrai, montrera également des ressources, peu import si elles sont supprimées. 0
    показатьHidden Si cela est vrai, va montrer des ressources, peu import si elles sont cachées dans les menus. 0
    скрыть Контейнеры Si elle est définie, ne montrera pas des ressources marquées Com un Conteneur (isfolder). 0
    includeContent Indique si le contenu de chaque ressource doit être retourné dans les résultats 0
    включают телевизоры Indique si les valeurs de variable modele devraient être inclus dans les propriétés disponibles pour chaque modèle de ressource. 0
    включитьTVList Не указан список опций, ограниченных по формуле переменных в моделях, для включения объяснения, что телевизоры включены в исходный код 1. 1.4.0
    готовит телевизор Готовит модельные переменные к запросу. 1 1.5.0
    подготовитьTVList Limite les TV qui sont préparés à ceux spécifiés par leur nom dans une liste délimitée par des virgules 1.5,0
    технологические телевизоры Indique si les valeurs TemplateVar doivent être rendus com ils le feraient sur la ressource resumée. TemplateVars doit être inclus (voir includeTVs / includeTVList) à traiter. 0
    процессTVList Не указан неограниченный список доступных имен TemplateVar для описания параметров. Modèle Vars spécifiés ici doivent être inclus через includeTV / includeTVList 1.4,0
    tvPrefix Предварительная фиксация для TemplateVar телевизор.
    idx Vous pouvez définir l’indice de départ (idx) à partir des ressources, qui est une propriété qui est incrémenté que chaque ressource est renvoyé. 1
    первая Défini la valeur de idx représentant la première ressouce 1
    последняя Défini la valeur de idx représentant la dernière ressource.Par défaut est # des ressources étant résumé + premier — 1
    всего Вар Définir la clé d’un espace réservé fixé par getResources indiquant le nombre total de ressources qui serait choisi sans tenir compte de la valeur limit. всего
    отладка Это время было обновлено, чтобы запросить SQL в журнале MODX. ложь

    Заполнители (espaces réservés) disponibles

    Les espaces réservés disponibles à vos getResources Chunks de mise en form sont mainalement tributaires des ressources que vous itérez.

    Voir: Tous les Tags sur la page des Tag de modèle couramment utilisé, cette page list les propriétés disponibles для всех ресурсов.

    Этот ресурс использует модельные переменные, соответствующие переменным, которые соответствуют резервным пространствам (значения заполнителей (espace de noms) для использования префиксов определенных параметров и параметров tvPrefix).

    En outre, il y a les variables suivantes:

    Заполнитель (espace de nom) Описание
    [[+ idx]] Augmente à chaque itération, en commençant par 1 (ou la valeur définie par le paramètre & idx ).

    Примеры

    Voir aussi les examples de sous section de la официальная документация для образцов, плюс подробности и обучающие материалы.

    Affiche une list des enfants Ressources de la ressource en Cours, en utilisant le chunk «myRowTpl»:

     [[! GetResources? & Родители = `[[* id]]` & tpl = `myRowTpl`]] 

    Affiche toutes les ressources sous la ressource ayant l’ID «5», à l’exception des ressources 10, en utilisant le chunk «myRowTpl»:

     [[! GetResources? & parent = `5` & resources =` -10` & tpl = `myRowTpl`]] 

    Уникальный уникальный ресурс, используемый для фрагмента «myRow Tpl»:

     [[! GetResources? & parent = `-1` & resources =` 10,11,12` & tpl = `myRowTpl`]] 

    Данных 5 лучших опубликованных ресурсов с идентификатором «5», с указанием «blogPost» и включительно с содержанием отсылки ресурсов:

     [[! GetResources? & parent = `5` & limit =` 5` & tpl = `blogPost` & includeContent =` 1`]] 

    Affiche une list des ressources enfants de la ressource actuelle, для идентификатора модели страницы «8» и использованного фрагмента «myRowTpl»:

     [[! GetResources? & parent = `[[* id]]` & where = `{" template: = ": 8}` & tpl = `myRowTpl`]] 

    Affiche une liste des ressources enfants de la ressource actuelle, ayant pour id de modèle de page 1 or 2:

     [[! GetResources? & parent = `[[* id]]` & where = `{" template: = ": 1," OR: template: = ": 2}` & tpl = `myRowTpl`]] 

    Affiche une liste des ressources enfants de la ressource actuelle, ayant pour id de modèle de page est 1, 2 or 3 (vous ne pouvez pas utiliser le même nom de clé plus d’une fois):

     [[! GetResources? & parent = `[[* id]]` & where = `{" template: IN ": [1,2,3]}` & tpl = `myRowTpl`]] 

    Afficher un message lorsque aucun résultat n’est Trouvé:

     [[! GetResources: default = `Ничего не найдено`? & Родители = `[[* id]]` & tpl = `myRowTpl`]] 

    Exemple avec un Tpl en ligne (@INLINE):

     [[! GetResources? & tpl = `@ INLINE 
  • [[+ pagetitle]]
  • `]]

    Envelopper un getResources dans un autre espace de nom ( собственных и внешнихTpl, которые не существуют для getResources вместо версии 1. 6.0, vous pouvez toujours le faire com ça ou utiliser la propriété & tplWrapper).

     [[getResources? ... & toPlaceholder = `results`]] [[+ results: notempty =` 
      [[+ results]]
    `]]

    Статистика моделей переменных с getResources

    Восстановите темп повторного использования, getResources не откроет пароль для телевизора по умолчанию. Si vous souhaitez afficher les téléviseurs, vous devez inclure les paramètres suivants:

    & includeTVs = `1` & processTVs =` 1`

    Vous devez également soit prefixer toutes les variables de modèle avec tv.Наш утилизатор имеет параметры в соответствии с заявлением для модификатора:

    & tvPrefix = «

    Dans le chunk Tpl vous utilisez pour afficher la sortie de getResources, utiliser une balise d’espace réservé comm celui-ci (mais avec le nom de votre TV):

     [[+ tv.my_tv]] 

    Использование getPage для разбивки на страницы

    Lorsqu’il — это комбинация с getPage, getResources vous permet de faire un système de pagination, и гибкая функция для страниц.

    Примеров:

    Prenez 10 premières ressources — trié par publié — en dessous de l’ID de ressources «17», pas plus de 2 niveaux de profondeur, avec les tpl ‘bloglistPost’, y содержат переменные модели и контент ресурсов:

     [[! GetPage? & elementClass = `modSnippet` & element =` getResources` & parent = `17` & depth =` 2` & limit = `10` & pageVarKey =` page` & includeTVs = `1` & includeContent =` 1` & tpl = `blogListPost`]] 
     

    Et le chunk blogListPost:

    [[+ опубликовано: strtotime: date = `% b% d% Y`]]

    [[+ pagetitle]] .......................................................

    Автор: [[+ createdby: userinfo = `username`]]

    [[+ интротекст]]

    Lire la suite

    <час />

    Dépannage (отладка)

    Rien ne se pas?

    Avant d’aller cogner la tête sur un mur, avez-vous vérifié pour vous assurer que ce Supplémentaire est réellement installé sur votre site?


    Vous avez un tableau de résultat à la place d’une belle mise en forme?

    Vous avez oublié d’inclure le paramètre «& tpl». Sans le paramètre & tpl, le Snippet récupère les ressources spécifiées, mais ne sait pas comment les formater. Assurez-vous d’inclure le paramètre & tpl dans votre appel Snippet.
    Ou vous avez mal nommé le nom du «tpl» oublié de créé le dit «tpl».
    Ou vous avez oublié de mettre le «&» devant un des paramètres.


    Tout fonctionne mais vous ne voyez pas le contenu de la ressource affiché?

    Vous avez oublié de mettre le paramètre & includeContent = `1`


    Vous avez d’autres problèmes non listés ici? N’hésitez pas à poser la question sur le forum Français de MODX или poser la question ici je ferais mon possible pour vous aider.

    N’hésitez pas à partager ou commenter, ça fait toujours plaisir d’avoir des retours 😉

    Список изменений для getResources. getResources 1.4.0-pl (21 сентября 2011 г.) ==================================== — [# 50] Используйте потомков родителей из других контекстов — [# 45] Добавить dbCacheFlag для управления кешированием базы данных getCollection, по умолчанию false — [# 49] Разрешить список названий ТВ, разделенных запятыми, как includeTVList или processTVList getResources 1. 3.1-pl (14 июля 2011 г.) ==================================== — [# 43] Разрешить 0 как свойство idx — [# 9] Исправить группировку tvFilters — [# 46] Исправить проблему с критериями для свойства & resources. getResources 1.3.0-пл (28 марта 2011 г.) ==================================== — [# 33] sortbyTVType: разрешить числовую и временную сортировку ТВ через SQL CAST () — [# 24] Исправить опечатки в параметрах свойств списка — [# 4] Поддержка нескольких полей сортировки через объект JSON — Используйте get () вместо toArray (), если includeContent имеет значение false — [# 22] Добавить свойство & toSeparatePlaceholder для разделения вывода getResources 1.2.2-pl (18 октября 2010 г.) ==================================== — [# 19] Исправлено sortbyTV, возвращающее повторяющиеся строки. getResources 1.2.1-пл (11 октября 2010 г.) ==================================== — Убрать непреднамеренный вызов modX :: setLogTarget (‘ECHO’) getResources 1.2.0-pl (25 сентября 2010 г.) ==================================== — Исправить ошибку, когда & родитель не установлен — Разрешить пустой и сортировку — Добавить возможность сортировки по одному значению переменной шаблона (или значению по умолчанию) getResources 1. 1.0-pl (30 июля 2010 г.) ==================================== — Добавлено свойство & toPlaceholder для присвоения результатов заполнителю. — Добавлено свойство & resources для включения / исключения определенных ресурсов. — Добавлено свойство & showDeleted — Разрешить передачу нескольких контекстов в & context — Добавлено свойство & showUnpublish — Добавлены getresources.ссылка core_path для упрощения разработки — [# ADDON-135] Сделать выходной разделитель настраиваемым с помощью свойства outputSeparator — Добавьте свойство where, чтобы разрешить специальные критерии в формате JSON. getResources 1.0.0-ga (29 декабря 2009 г.) ==================================== — [# ADDON-81] Разрешить пустое свойство tvPrefix. — [# ADDON-89] Разрешить родительскому свойству иметь значение 0. — Изменено значение по умолчанию sortbyAlias ​​на пустую строку и добавлено свойство sortbyEscaped со значением по умолчанию 0. — Добавлен журнал изменений, лицензия и файл readme.

    Learn Modx — Extras

    Form Это фрагмент динамической обработки форм для MODx Revolution. Он обрабатывает форму после отправки, выполняя проверку и последующие действия, такие как отправка электронного письма. Он не создает форму, но может повторно заполнить ее, если не прошел проверку.

    Чтобы исправить recaptchav2
    https://github.com/Sterc/FormIt/issues/170#issuecomment-387549784
            Немного отредактировал код, вот так в файле / core / components / formit / src / FormIt / Request.php:
    
    
    PS На самом деле просто измените строку 82 в оригинале с:
    if ($ this-> formit-> hasHook ('recaptcha')) {
    В это:
    if ($ this-> formit-> hasHook ('recaptcha') &&! ($ this-> formit-> hasHook ('recaptchav2'))) {
    который просто проверяет «recaptchav2» и не запускает оператор if, если ловушкой является «recaptchav2» и только тигры для «recaptcha». НАПРИМЕР. если recaptcha в хуках, но НЕ recaptchav2 в хуках, то продолжайте процесс recaptcha.
        
     
    [[$ sample.formit]]
     
    фрагмент: email_tpl
    
    
    
    
    <название>
    [[! ++ имя_сайта]]
    
    <стиль>
    / * -------------------------------------
    ГЛОБАЛЬНЫЙ СБРОС
    ------------------------------------- * /
    img {
    граница: нет;
    -ms-режим интерполяции: бикубический;
    максимальная ширина: 100%; }
    
    тело {
    цвет фона: # f9f9f9;
    семейство шрифтов: без засечек;
    -webkit-font-smoothing: сглаживание;
    размер шрифта: 14 пикселей;
    высота строки: 1. 4;
    маржа: 0;
    отступ: 0;
    -ms-text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%; }
    
    стол {
    граница-коллапс: раздельный;
    мсо-таблица-lspace: 0pt;
    МСО-таблица-rspace: 0pt;
    ширина: 100%; }
    table td {
    семейство шрифтов: без засечек;
    размер шрифта: 14 пикселей;
    вертикальное выравнивание: сверху; }
    
    / * -------------------------------------
    КУЗОВ И КОНТЕЙНЕР
    ------------------------------------- * /
    
    .тело {
    цвет фона: # f6f6f6;
    ширина: 100%; }
    
    / * Установите максимальную ширину и сделайте так, чтобы он отображался как блок, чтобы он автоматически растягивался до этой ширины, но также уменьшался на телефоне или в чем-то другом * /
    .container {
    дисплей: блок;
    Маржа: 0 авто! Важно;
    / * делает его центрированным * /
    максимальная ширина: 580 пикселей;
    отступ: 10 пикселей;
    ширина: авто! важно;
    ширина: 580 пикселей; }
    
    / * Это также должен быть блочный элемент, чтобы он заполнял 100%.контейнер * /
    .содержание {
    размер коробки: рамка-рамка;
    дисплей: блок;
    Маржа: 0 авто;
    максимальная ширина: 580 пикселей;
    отступ: 10 пикселей; }
    
    / * -------------------------------------
    ЗАГОЛОВОК, НИЖНИЙ, ГЛАВНЫЙ
    ------------------------------------- * /
    . главный {
    фон: #fff;
    радиус границы: 3 пикселя;
    ширина: 100%; }
    
    .wrapper {
    размер коробки: рамка-рамка;
    отступ: 20 пикселей; }
    
    .footer {
    ясно: оба;
    padding-top: 10 пикселей;
    выравнивание текста: центр;
    ширина: 100%; }
    .footer td,
    .footer p,
    .footer span,
    .footer a {
    цвет: # 999999;
    размер шрифта: 12 пикселей;
    выравнивание текста: центр; }
    
    / * -------------------------------------
    ТИПОГРАФИЯ
    ------------------------------------- * /
    h2,
    h3,
    h4,
    h5 {
    цвет: # 000000;
    семейство шрифтов: без засечек;
    font-weight: 400;
    высота строки: 1.4;
    маржа: 0;
    Нижнее поле: 30 пикселей; }
    
    h2 {
    размер шрифта: 35 пикселей;
    font-weight: 300;
    выравнивание текста: центр;
    текст-преобразование: заглавные буквы; }
    
    п,
    ул,
    ol {
    семейство шрифтов: без засечек;
    размер шрифта: 14 пикселей;
    шрифт: нормальный;
    маржа: 0;
    Нижнее поле: 15 пикселей; }
    п ли,
    ул ли,
    ol li {
    позиция в стиле списка: внутри;
    маржа слева: 5 пикселей; }
    
    a {
    цвет: # 3498db;
    оформление текста: подчеркивание; }
    
    / * -------------------------------------
    КНОПКИ
    ------------------------------------- * /
    . btn {
    размер коробки: рамка-рамка;
    ширина: 100%; }
    .btn> tbody> tr> td {
    padding-bottom: 15 пикселей; }
    .btn table {
    ширина: авто; }
    .btn table td {
    цвет фона: #ffffff;
    радиус границы: 5 пикселей;
    выравнивание текста: центр; }
    .btn a {
    цвет фона: #ffffff;
    граница: сплошная 1px # 3498db;
    радиус границы: 5 пикселей;
    размер коробки: рамка-рамка;
    цвет: # 3498db;
    курсор: указатель;
    дисплей: встроенный блок;
    размер шрифта: 14 пикселей;
    font-weight: жирный;
    маржа: 0;
    отступ: 12px 25px;
    текстовое оформление: нет;
    текст-преобразование: заглавные буквы; }
    
    .btn-primary table td {
    цвет фона: # 3498db; }
    
    .btn-primary a {
    цвет фона: # 3498db;
    цвет границы: # 3498db;
    цвет: #ffffff; }
    
    / * -------------------------------------
    ДРУГИЕ СТИЛИ, КОТОРЫЕ МОГУТ БЫТЬ ПОЛЕЗНЫ
    ------------------------------------- * /
    .последний {
    нижнее поле: 0; }
    
    .первый {
    margin-top: 0; }
    
    .align-center {
    выравнивание текста: центр; }
    
    .align-right {
    выравнивание текста: вправо; }
    
    . выровнять по левому краю {
    выравнивание текста: слева; }
    
    .Чисто {
    ясно: оба; }
    
    .mt0 {
    margin-top: 0; }
    
    .mb0 {
    нижнее поле: 0; }
    
    .preheader {
    цвет: прозрачный;
    дисплей: нет;
    высота: 0;
    максимальная высота: 0;
    максимальная ширина: 0;
    непрозрачность: 0;
    переполнение: скрыто;
    мсо-скрыть: все;
    видимость: скрыта;
    ширина: 0; }
    
    .powered-by a {
    текстовое оформление: нет; }
    
    hr {
    граница: 0;
    нижняя граница: сплошной 1px # f6f6f6;
    Маржа: 20 пикселей 0; }
    
    / * -------------------------------------
    ОТВЕТСТВЕННЫЙ И МОБИЛЬНЫЙ ДРУЖЕСТВЕННЫЙ СТИЛЬ
    ------------------------------------- * /
    @media only screen и (max-width: 620px) {
    table [class = body] h2 {
    размер шрифта: 28 пикселей! важно;
    нижнее поле: 10 пикселей! важно; }
    таблица [class = body] p,
    таблица [class = body] ul,
    таблица [class = body] ol,
    таблица [class = body] td,
    таблица [class = body] диапазон,
    table [class = body] a {
    размер шрифта: 16 пикселей! важно; }
    таблица [класс = тело].обертка
    table [class = body] . article {
    отступ: 10 пикселей! важно; }
    table [class = body] .content {
    заполнение: 0! важно; }
    table [class = body] .container {
    заполнение: 0! важно;
    ширина: 100%! важно; }
    table [class = body] .main {
    ширина левой границы: 0! важно;
    радиус границы: 0! важно;
    граница-правая ширина: 0! важно; }
    таблица [класс = тело].btn table {
    ширина: 100%! важно; }
    table [class = body] .btn a {
    ширина: 100%! важно; }
    table [class = body] .img-responseive {
    высота: авто! важно;
    максимальная ширина: 100%! важно;
    ширина: авто! важно; }}
    
    / * -------------------------------------
    СОХРАНИТЕ ЭТИ СТИЛИ В ГОЛОВЕ
    ------------------------------------- * /
    @media all {
    .ExternalClass {
    ширина: 100%; }
    .ExternalClass,
    .ExternalClass p,
    .ExternalClass диапазон,
    .ExternalClass шрифт,
    .ExternalClass td,
    .ExternalClass div {
    высота строки: 100%; }
    .apple-link a {
    цвет: наследовать! важно;
    семейство шрифтов: наследовать! важно;
    размер шрифта: наследовать! важно;
    вес шрифта: наследовать! важно;
    высота строки: наследование! важно;
    текст-украшение: нет! важно; }
    . btn-primary table td: hover {
    цвет фона: # 34495e! important; }
    .btn-primary a: hover {
    цвет фона: # 34495e! important;
    цвет границы: # 34495e! important; }}
    
    
    
    
    
    <таблица>
    Большинство таблиц содержимого внутри могут быть учитывая 100% ширину.->

    EveryNation Macau

    Подключайтесь - контактная форма

    Полное имя

    [[+ имя]] [[+ фамилия]]

    & nbsp;

    Электронное письмо

    [[+ адрес электронной почты]]

    & nbsp;

    Номер мобильного

    [[+ номер телефона]]

    & nbsp;

    Доступно для встречи

    [[+ статус]]

    & nbsp;

    Сообщение

    [[+ сообщение]]

    & nbsp;

    & nbsp;

    & nbsp;

    getResources: фрагмент необходим для списка ресурсов

    Элементы recquis

    MODx Revolution 2. 0.0-beta5 и т.д., новый

    История

    getResources в работе, разработанной Джейсоном Кауардом (opengeek) и опубликованной 30 июля 2009 г.

    Téléchargement

    Вы используете телефонное зарядное устройство getResources является участником менеджера MODx Révolution через категории «Système», «Gestion des paquets», «Télécharger des extras».

    Использование

    getResources — это фрагмент, который не используется для переменной [[! GetResources]].
    Эта переменная, vous pouvez ajouter de nombreuses propriétés afin de personnaliser votre liste d’éléments, sinon cela affichera une liste par défaut. Добавьте afficher les propriétés il suffit d’ajouter & nompropriete = `valeurdelapropriete` в переменную cette manière: [[! GetResources? & nompropriete = `valeurdelapropriete`]].
    Voici une liste des ces propriétés:

    Список частных лиц, имеющих отношение к мизансцене на страницах списков
    Nom Описание Valeur par défaut Ajouté dans la version
    tpl Nom du chunk servant à afficher chaque élément de la liste. Chaque ressource Trouvé, le snippet affichera le code HTML de ce chunk
    tplOdd Nom du chunk servant à afficher les ressources qui possible un id impair
    servant tplFirst Nom du chunk afficher le premier element de la liste
    tplLast Nom du chunk servant at afficher le dernier element de la liste
    tpl_N Номинальный обслуживающий фрагмент в ресурсе Nème.Пример элемента & tpl_4 = `tpl4th` prendra le chunk tpl4th to afficher la ressource avec l’id 4
    outputSeparator Permet de rajouter une chaîne optionnelle qui sépare chaque élément de la liste. Эта последовательность действий была добавлена ​​в фрагмент «\ n»
    toPlaceholder Был активен в качестве заместителя, и в результате был назначен заполнитель в качестве заполнителя вместо руководства по возвращению. Заполнитель — это переменная, которая содержит список ресурсов.La valeur sera le nom de cette variable. Залейте результат, добавив в него переменную, изменяющуюся в соответствии с изменяемым образом: [[+ nomvariable]]
    toSeparatePlaceholder Si toSeparatePlaceholder действует, le résultat sera assigné dans plusieurs de contenant lez suivi par un nombre de 0 à n. Pour afficher l’élément 0 il suffit d’écrire, pour l’élément 1, il faut écrire la variable. 1.3.0
    Autres propriétés
    Номинальный Описание Valeur par défaut Ajouté dans la version
    родители Все ресурсы не содержат открытых источников.Séparez les ids par une virgule id de la ressource en Cours
    resources Permet d’exclure une ressource en affichant un «-» devant l’id de la ressource à exclure. Пример: & resources = `-1, -2`. La liste n’affichera pas les ressources avec les ids 1 et 2
    depth Profondeur de recherche des ressources. Valeur numérique. 10
    tvFilters Используется для фильтрации ресурсов и функций определенных переменных моделей (TV).Les valeurs doivent être saisies de cette manière nomTV == valeur. Налейте больше прекрасных valeurs, il existe deux séparateurs différents.
    Vous pouvez utiliser le séparateur «||» (ou), les ressources possible une de ces valeurs seront listées. maTV == unevaleur || maTV == autrevaleur L’autre sérateur et la virgule «,» (et). Les ressources devront rassembler les deux conditions pour être affichés.
    maTV == unevaleur, maTV == autrevaleur Vous pouvez également rassembler plusieurs conditions pour un filter avancé de vos ressources.La seule выбрал qu’il faut savoir est que le «ou» (||) a priorité sur le «et» (,).
    maTV == 1 || maTV == 2, autreTV == 3 || autreTV == 1 В этом примере есть несколько ресурсов, которые имеют переменную модели maTV, которая является игрой на 1 или 3, и с переменной autreTV, которая находится на 3 или 1 серональной привязке.

    Dans la valeur de la TV vous pouvez également utiliser le signe pourcentage.
    Pour l’exemple ci-dessous, toutes les ressources pour lesquels la variable maTv Possible un a seront affichées.
    maTV ==% a%
    Pour l’exemple ci-dessous, toutes les ressources pour lesquels la variable maTv start par un a seront affichées.
    myTV == a%
    Налейте примеры ci-dessous, toutes les ressources pour lesquels la variable maTv finie par un a seront affichées.
    myTV ==% а
    Vous pouvez également combiner le signe% avec les séparateurs «et» (,) et «ou» (||).

    sortby Champ de Tri.L’élément choisi sera utilisé pour trier les ressources. Si vous voulez trier en fonction d’une variable de modèle, voir sortbyTV.

    Vous pouvez utilisez un tri au hasard de cette manière: & sortby = `RAND ()`.

    Заменить версию 1.3.0, пройти проверку на больших чемпионатах: & sortby = `{» publishedon «:» ASC «,» createdon «:» DESC «}`.

    Трир имеет список доступных ресурсов: & sortby = `FIELD (modResource.id, 4,7,2,5,1)`.

    Вы можете использовать список идентификаторов на ТВ: & sortby = `FIELD (modResource.id,) `

    sortbyAlias ​​ Разрешение на спецификацию класса утилителя под псевдонимом для собственной сортировки Валюрс: modDocument, modStaticResource, modSymLink или modWebLink
    sortdir Порядок три DESC
    sortbyTV Трехмерная функция переменной модели.
    sortdirTV Ordre de tri lorsque vous triez en fonction d’une variable de modèle. DESC
    sortbyTVType Спецификация типа переменной, определяемой в собственном sortbyTV. Возможные значения: строка, целое число, десятичное число, дата и время строка 1.3.0
    предел Ограничение количества имеющихся ресурсов 5
    где Допустимое разрешение на поставку условий . Пример: & where = `{» template: = «: 8}`
    context Spécifie le context qui doit être cherché.По умолчанию, веб-контекст.
    showUnpublished Permet d’afficher ou non les ressources qui ne sont pas publiées. Valeur 1 pour les afficher sinon 0. 0
    showDeleted Permet d’afficher or non les ressources Supprimées. Valeur 1 pour les afficher sinon 0. 0
    showHidden Permet d’afficher or les ressources cachées dans le menu. Valeur 1 pour les afficher sinon 0. 0
    скрыть Контейнеры Permet de cacher ou non les ressources qui sont considérées com dessiers. Valeur 1 pour les cacher sinon 0. 0
    includeContent Indique si le contenu de la page peut être affiché or non dans la liste des resources. Valeur 1 для авторизатора 0. 0
    включает телевизоры Индикация всех телевизоров с ресурсами, имеющими доступ к источникам или без списка ресурсов.Valeur 1 для авторизатора 0. 0
    processTVs Позволяет задать параметры телевизора, относящиеся к Chemin, относящемуся к изображению. Синонируйте афишу чемпионата по телевидению. Valeur 1 для авторизации заданного значения 0. 0
    tvPrefix Специальная предварительная версия для изменения переменных модели. Si le prefix est tv. поиск переменных [[+ tv.nomvariable]] в ассоциированном фрагменте с getResources tv.
    idx Permet de définir l’id de la ressource de départ. Mais au lieu de lister les répertoires, l’id sera incrémenté de 1 à chaque ressource. Ce qui signifie que si on met l’id 3 à cette catégorie, même si la ressource avec l’id 3 à une page fille avec l’id 6, le getResources prendra la ressource avec l’id 4 puis l’id 5 et. Ensuite l’id 6 jusqu’au dernier id ou jusqu’à l’id défini Com dernière ressource. 1
    первый Défini l’id de la ressource qui représentera la première ressource 1
    last Défini l’id de la ressource qui représentera la dernière ressource.Par défaut le getResources список всех соответствующих ресурсов aux propriétés
    totalVar Indique le nombre total des ressources qui seraient sélectionnés sans tenir compte de la valeur limit lorsque l’on affiche les résult . всего
    отладка Если верно, запрос SQL является посланником в журнале MODx. ложный
    Примеры Quelques

    Первый пример список ресурсов , который используется для родительской страницы и использует фрагмент «monChunk» для дополнительных ресурсов.

    [[! GetResources? & Родители = `[[* id]]` & tpl = `monChunk`]]

    Пример 2 из список ресурсов , который используется для родительского ресурса с номером 5, чтобы использовать фрагмент «monChunk» для получения дополнительных ресурсов, находящихся в обращении за ресурсами до 6.

    [[! GetResources? & parent = `5` & tpl =` monChunk` & resources = `-6`]]

    3-й пример с списком всех ресурсов Чтобы использовать родительские ресурсы с идентификаторами 5 и 10, используйте фрагмент «articleBlog» для дополнительных ресурсов.Il faudra également pouvoir afficher le contenu de la ressource.

    [[! GetResources? & parent = `5,10` & tpl =` articleBlog` & includeContent = `1`]]

    4 примера списка ресурсов , которые могут быть использованы для родительского ресурса в исходном коде, вместо того, чтобы добавить шаблон из шаблона 2 и использовать фрагмент «monChunk».

    [[! GetResources? & parent = `[[* id]]` & tpl = `monChunk` & where =` {"template: =": 2} `]]

    5-й пример списка включает в себя ресурсы , чтобы добавить родительский ресурс в курс, не использовать шаблон, содержащий 2 или 3 и использовать фрагмент «monChunk».

    [[! GetResources? & parent = `[[* id]]` & tpl = `monChunk` & where =` {"template: =": 2, "OR: template: =": 3} `]]

    6-й пример списка включает в себя ресурсы , чтобы добавить исходный ресурс в исходный код, чтобы добавить шаблон в шаблон с идентификаторами 2, 3 или 4 и использовать фрагмент «monChunk».

    [[! GetResources? & parent = `[[* id]]` & tpl = `monChunk` & where =` {"template: IN": [2,3,4]} `]]

    Le 7ème instance va lister toutes les ressources qui ont pour parent la ressource en Cours et qui ne sont pas des dessiers.О том, что вы можете использовать контент ресурсов и переменные модели, можно использовать в блоке articleBlog. On veut également lister les ressources qui sont cachés dans le menu et on veut lister les ressources en fonction de son id de manière décroissante.

    [[! GetResources? & parent = `[[* id]]` & hideContainers = `1` & includeContent =` 1` & includeTVs = `1` & sortby =` menuindex` & sortdir = `DESC` & tpl =` articleBlog` & where = `{" template: IN ": [2,3,4]} `]]

    Пример 7 из список всех ресурсов , который используется для родительского ресурса в процессе использования фрагмента «monChunk». S’il n’y aucun résultat, на официальном сообщении «Aucun résultat Trouvé.».

    [[! GetResources: default = `Aucun résultat Trouvé.`? & Родители = `[[* id]]` & tpl = `monChunk`]]
    Комментарий écrire vos chunks avec getResources

    Le code que vous devez mettre dans vos chunks pour un getResources est un peu différent.

    Добавьте определенные переменные в MODx, используя переменную pagetitle или id, или замените «*» на +.

    [[+ pagetitle]] [[+ id]] [[+ description]]

    Добавьте переменные модели, если они не изменят свою модель «+», чтобы изменить предыдущие параметры модели getResources qui est par défaut «+ tv»

    [[+ tv.mavariable]] [[+ tv.illustration]] [[+ tv.ville]]
    Образец фрагмента

    Le chunk ci-dessous affiche un article avec une image, un title et le contenu de l’article

    <статья> [[+ pagetitle]]
    [[+ контент]]