Спонсор блога Магазин детской одежды Dress
Служит для вывода информации из различных страниц в одном месте и в необходимом формате. К примеру вывод новостей в ленте новостей
[[!getResources? &parents=`-1`
&resources=`16`
&tpl=`ShowLevel1OnSlider`
&includeTVs=`1`
&processTVs=`1`]]
  
( Вывод в чанке url текущей страницы [[~[[+id]]]] )
код чанка IconsTriger
<div class="bCol m25">
<a href="[[+tv.TrigerLink]]" class="eInfoBlock">
<div class="eInfoBlock_img mBulding">
<img src="[[+tv.imageField]]" alt="[[+pagetitle]]">
</div>
<div class="eInfoBlock_text">
[[+tv.valueFieldText]]
</div>
<div class="eInfoBlock_text mSmall">
[[+pagetitle]]
</div>
<!--hover data-->
<div class="eInfoBlock_hover">
<div class="eInfoBlock_hoverInner">
[[+tv.addDescription]]
</div>
</div>
</a>
</div>
пример вывода всех товаров
[[!getResources? &parents=`3` &where=`{"template:=":8}` &tpl=`myRowTpl` &depth=`3` &limit=`0`]]
Сниппет getResources может быть вызван при помощи тега:
Официальная документация
Служит для вывода информации из различных страниц в одном месте и в необходимом формате. К примеру вывод новостей в ленте новостей
Пример
&resources=`16`
&tpl=`ShowLevel1OnSlider`
&includeTVs=`1`
&processTVs=`1`]]
( Вывод в чанке url текущей страницы [[~[[+id]]]] )
код чанка IconsTriger
<div class="bCol m25">
<a href="[[+tv.TrigerLink]]" class="eInfoBlock">
<div class="eInfoBlock_img mBulding">
<img src="[[+tv.imageField]]" alt="[[+pagetitle]]">
</div>
<div class="eInfoBlock_text">
[[+tv.valueFieldText]]
</div>
<div class="eInfoBlock_text mSmall">
[[+pagetitle]]
</div>
<!--hover data-->
<div class="eInfoBlock_hover">
<div class="eInfoBlock_hoverInner">
[[+tv.addDescription]]
</div>
</div>
</a>
</div>
пример вывода всех товаров
[[!getResources? &parents=`3` &where=`{"template:=":8}` &tpl=`myRowTpl` &depth=`3` &limit=`0`]]
Сниппет getResources может быть вызван при помощи тега:
[[getResources]]
Вызовы без заданного параметра &tpl будет просто выводить массив в виде списка каждого конечного ресурса и его полей.
Доступные параметры
Параметры шаблонизации
| # | Параметр | Описание | 
|---|---|---|
| 1 | tpl | Имя чанка, выступающего в качестве шаблона для ресурса. Если не установлен, свойства выдаются в виде списка для каждого ресурса | 
| 2 | tplOdd | Имя чанка, выступающего в качестве шаблона для ресурсов с нечетным индексом (см. параметр idx | 
| 3 | tplFirst | Имя чанка, выступающего в качестве шаблона для первого ресурса | 
| 4 | tplLast | Имя чанка, выступающего в качестве шаблона для последнего ресурса | 
| 5 | tpl_N | Имя чанка, выступающего в качестве шаблона для N-ного ресурса, например &tpl_4=`tpl4th` | 
| 6 | tpl_nN | Имя чанка, выступающего в качестве шаблона для каждого N-ного ресурса, например шаблон &tpl_n4=`tpl4th` будет применен к каждому элементу, порядковый номер которого кратен 4 Добавлено в версии: 1.4.1-pl | 
| 7 | tplPath | Дополнительный каталог для поиска чанков на основе файлов при использовании биндинга @FILE По умолчанию: assets_path + "elements/chunks/" | 
| 8 | outputSeparator | Дополнительные строки для разделения каждого ресурса после шаблонизации По умолчанию: "\n" | 
| 9 | toPlaceholder | Если установлен, присвоит результат в указанный плейсхолдер вместо вывода напрямую | 
| 10 | toSeparatePlaceholders | Если установлен, присвоит КАЖДОМУ результату отдельное имя плейсхолдера в виде суффикса из значения этого параметра и порядкового номера (начиная с 0) Добавлено в версии: 1.3.0 | 
Параметры выборки
| # | Параметр | Описание | |||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | parents | Список идентификаторов родительских ресурсов, разделенных запятыми. Используйте -1 для исключения родительских ресурсов. По умолчанию: current Resource id | |||||||||||||||||||||||||||||||||||||||
| 2 | resources | Список идентификаторов ресурсов, разделенных запятыми, для включения их в результат выборки. Префикс в виде минуса исключает ресурсы из результата выборки. | |||||||||||||||||||||||||||||||||||||||
| 3 | depth | Целое число, указывающее глубину поиска для ресурсов от каждого из родителей. По умолчанию: 10 | |||||||||||||||||||||||||||||||||||||||
| 3 | tvFilters | 
Может использоваться для фильтрации ресурсов по определенным значениям переменных шаблона (TV). Они задаются как [(tvname)(operator)](value). Можно использовать два разделителя для объединения условий фильтра. 
У вас могут быть фильтры с условием "ИЛИ" (OR) в виде двойной вертикальной черты. OR-фильтр получает ресурсы, которые имеют одно из перечисленных значений переменной шаблона (TV). 
mytv==somevalue||mytv==othervalue 
Вы также можете использовать фильтр "И" (AND) используя запятую. Этот фильтр проверит, чтобы все условия выполнялись. 
mytv==somevalue,othertv==othervalue 
Для тонкой фильтрации вы можете также группировать их. Важно знать, что сначала идут условия, разделенные по условиям ИЛИ (||), затем условия И (,). Давайте посмотрим такой пример: 
mytv==foo||mytv==bar,bartv==3||bartv==1 
Ресурсы будут отфильтрованы по одному из следующих условий (на самом деле в запросах к БД используется функция LIKE): 
 
Приведенные выше примеры ищут точные совпадения. Если вы хотите, вы также можете использовать знак процента (%) в качестве шаблона. Например: 
mytv==%a% 
Находит любые ресуры, которые имеют "a" в значении mytv. 
mytv==a% 
Находит любые ресурсы, значение mytv которых начинается с "a" и содержит все что угодно после "a". 
mytv==%a 
Находит любые ресурсы, которые которые имеют значение mytv, заканчивающееся на "a" и содержащее все что угодно до "a". 
И конечно, вы можете совмещать это с OR (||) и AND (,) разделителями, которые описаны выше. 
Важно знать, что эта функция смотрит на исходные значения переменных шаблона, заданные для конкретного ресурса. Это значит, что значение было установлено для ресурса и что оно не будет обработано как переменная шаблона с типом вывода (или значение по умолчанию в релизах до 1.4.2-pl; в этом релизе добавлена поддержка фильтрации, которая включает значения по умолчанию). Так что если у вас есть переменная шаблона "autotag", это значит, что исходное значение представляет собой список тегов, разделенных запятыми и оно не распалось на теги так, как это видно в админке. 
Новые операторы в фильтрах доступны в 1.4.2-pl
Начиная с релиза getResources 1.4.2-pl имеется целый ряд новых операторов сравнения, которые можно использовать при построении условий фильтрации. Кроме этого, при использовании многих из этих новых операторов при сравнении с числовыми значениями значения переменных шаблона автоматически приводятся к числовым типам. Вот список новых операторов: 
<=> — безопасное сравнение с NULL 
  | |||||||||||||||||||||||||||||||||||||||
| 3 | sortby | 
Любое поле ресурса (за исключением переменных шаблона) для сортировки. Некоторые из общих полей для сортировки - это publishedon, menuindex, pagetitle и др., но смотрите документацию по ресурсам для всех полей. Укажите только имя поля, без использования синтаксиса тегов. Обратите внимание, что при использовании таких полей, как template, publishedby и подобных для сортировки, они будут сортироваться по сырым значениям, таким как ID шаблона или юзера, а не по их именам. 
Вы также можете отсортировать в случайном порядке, используя RAND(), вот так: 
&sortby=`RAND()` 
Начиная с версии 1.3.0 это также может быть JSON массив для сортировки по нескольким полям, например: 
&sortby=`{"publishedon":"ASC","createdon":"DESC"}`
Если вы хотите сортировать в определенном порядке, вы можете сделать это, указав список идентификаторов ресурсов следующим образом: 
&sortby=`FIELD(modResource.id, 4,7,2,5,1 )` 
Тоже самое возможно, если вы передадите список ID для сортировки в переменной шаблона, например: 
&sortby=`FIELD(modResource.id,[[*templateVariable]])`По умолчанию: publishedon Добавлено в версии: 1.3.0  | |||||||||||||||||||||||||||||||||||||||
| 4 | sortbyAlias | Псевдоним запроса для поля из sortby | |||||||||||||||||||||||||||||||||||||||
| 5 | sortbyEscaped | Экранировать имя поля заданного в sortby | |||||||||||||||||||||||||||||||||||||||
| sortdir | Порядок сортировки По умолчанию: DESC | ||||||||||||||||||||||||||||||||||||||||
| 6 | sortbyTV | Переменная шаблона (Template Variable) для сортировки Добавлено в версии: 1.2.0 | |||||||||||||||||||||||||||||||||||||||
| 7 | sortdirTV | Порядок сортировки при использовании sortbyTV По умолчанию: DESC Добавлено в версии: 1.2.0 | |||||||||||||||||||||||||||||||||||||||
| 8 | sortbyTVType | Указывает тип данных сортировки по TV. Возможные значения: string, integer, decimal, datetime По умолчанию: string Добавлено в версии: 1.3.0 | |||||||||||||||||||||||||||||||||||||||
| 9 | limit | Ограничение количества возвращаемых ресурсов По умолчанию: 5 | |||||||||||||||||||||||||||||||||||||||
| 10 | offset | Смещение ресурсов для пропуска, которые возвращаются в соответствии с критериями По умолчанию: 0 | |||||||||||||||||||||||||||||||||||||||
| 11 | where | Выражение критериев в json-стиле для построения любых дополнительных условий. Смотрите ниже пример. Подробнее http: //rtfm.modx.com/display/xPDO20/xPDOQuery.where | |||||||||||||||||||||||||||||||||||||||
| 12 | context | В каком контексте следует искать. По умолчанию текущий контекст. | 
Другие параметры
| # | Параметр | Описание | 
|---|---|---|
| 1 | showUnpublished | Если true, то будут показаны также ресурсы, которые не опубликованы. По умолчанию: 0 | 
| 2 | showDeleted | Если true, то будут показаны ресурсы независимо от того, удалены они или нет. По умолчанию: 0 | 
| 3 | showHidden | Если true, покажет ресурсы независимо от того, показываются они в меню или нет. По умолчанию: 0 | 
| 4 | hideContainers | Если указан, то не будут показаны ресурсы, помеченные как контейнер (is_folder). По умолчанию: 0 | 
| 5 | includeContent | Указывает, что содержание каждого ресурса должно возвращаться в результатах выборки. По умолчанию: 0 | 
| 6 | includeTVs | Указывает, что значения переменных шаблона должны быть включены в набор свойств, доступных для каждого шаблона ресурса По умолчанию: 0 | 
| 7 | includeTVList | Дополнительный список разделенных запятыми имет переменных шаблона для явного включения в результат, если includeTVs установлен в 1 Добавлено в версии: 1.4.0 | 
| 8 | processTVs | Указывает, что переменные шаблона должны быть отрисованы так как они были бы представлены в ресурсе. Переменные шаблона должны быть включены для обработки (см. includeTVs/includeTVList). По умолчанию: 0 | 
| 9 | processTVList | Дополнительный список имен переменных шаблона, разделенных запятыми, для явной обработки. Переменные шаблона, заданные здесь, должны быть включены через includeTVs/includeTVList Добавлено в версии: 1.4.0 | 
| 10 | tvPrefix | Префикс для свойств в виде переменных шаблона По умолчанию: tv. | 
| 11 | idx | Вы можете задать начало idx ресурсов, что представляет собой свойство, котороые увеличивается с каждым отрисованным ресурсом По умолчанию: 1 | 
| 12 | first | Задает idx, который представляет собой первый ресурс По умолчанию: 1 | 
| 13 | last | Задает idx, который представляет последний ресурс. По умолчанию это количество ресурсов, которые будут складываться + первый - 1 (?) | 
| 14 | totalVar | Задает ключ плейсхолдера, устанавливаемого getResources для показа общего количества ресурсов, которые будут выбраны не учитывая значения limit. По умолчанию: total | 
| 15 | debug | Если true, будет записывать sql-запросы в log MODX. По умолчанию: false | 
Доступные плейсхолдеры
Плейсхолдеры доступные в ваших чанках форматирования getResources в основном зависят от ресурсов, которые вы перечисляете.
См. Все теги на странице "Часто используемые теги шаблона" — это список свойств, доступных для всех ресурсов.
Если ваш ресурс имеет переменные шаблона, те в свою очередь будут иметь соответствующие плейсхолдеры (помните, что плейсхолдеры будут использовать префикс, заданный через параметр &tvPrefix)
Кроме того, существуют следующие плейсхолдеры:
| Плейсхолдер | Описание | 
|---|---|
[[+idx]]  | Увеличивается с каждой итерацией, начиная с 1 (или со значения, установленного параметром &idx) | 
Примеры
Вывод списка дочерних ресурсов текущего ресурса, используя чанк 'myRowTpl':
[[!getResources? &parents=`[[*id]]` &tpl=`myRowTpl`]]
Вывод всех дочерних ресурсов ресурса с ID '5', за исключением ресурса 10, используя чанк 'myRowTpl':
[[!getResources? &parents=`5` &resources=`-10` &tpl=`myRowTpl`]]
Вывод всех дочерних ресурсов ресурса с ID '5', за исключением текущего ресурса, используя чанк 'myRowTpl':
[[!getResources? &parents=`5` &resources=`-[[*id]]` &tpl=`myRowTpl`]]
Вывод всех дочерних ресурсов ресурса с ID '5' с сортировкой как в дереве ресурсов используя чанк 'myRowTpl':
[[!getResources? &parents=`5` &tpl=`myRowTpl` &sortby=`{"menuindex":"ASC"}`]]
Вывод только заданных ресурсов, используя чанк 'myRowTpl':
[[!getResources? &parents=`-1` &resources=`10,11,12` &tpl=`myRowTpl`]]
Вывод последних 5 опубликованных ресурсов, у которых родительский ресурс с ID '5', используя шаблон 'blogPost':
[[!getResources? &parents=`5` &limit=`5` &tpl=`blogPost` &includeContent=`1`]]
Вывод списка дочерних ресурсов текущего ресурса, основанного на шаблоне ресурсов:
[[!getResources? &parents=`[[*id]]` &where=`{"template:=":8}` &tpl=`myRowTpl`]]
Вывод списка дочерних ресурсов текущего ресурса, где ID шаблона ресурсов равен 1 или 2:
[[!getResources? &parents=`[[*id]]` &where=`{"template:=":1, "OR:template:=":2}` &tpl=`myRowTpl`]]
Вывод списка дочерних ресурсов текущего ресурса, где ID шаблона ресурсов равен 1, 2 или 3 (вы не можете использовать тот же ключ больше одного раза):
[[!getResources? &parents=`[[*id]]` &where=`{"template:IN":[ 1,2,3 ]}` &tpl=`myRowTpl`]]
Показ сообщения, когда ничего не найдено (эквивалент "empty" в Ditto):
[[!getResources:default=`No results found`? &parents=`[[*id]]` &tpl=`myRowTpl`]]
Показ переменных шаблона (Template Variables) с getResources
Чтобы уменьшить время обработки, getResources не получает значения TV по умолчанию. Если вы хотите показывать TV, вы должны включить следующие параметры:
&includeTVs=`1` &processTVs=`1`
Вам также нужен либо префикс для всех TV с tv. или использовать этот параметр в теге вашего сниппета:
&tvPrefix=``
В чанке tpl, который вы используете для вывода getResources, используйте тег плейсхолдера как здесь (но с именем вашего TV):
[[+tv.my_tv]]
Использование getPage для постраничной навигации
В сочетании с getPage getResources позволяет делать мощные и гибкие нумерации ваших страниц.
Примеры
Берет первые 10 ресурсов, отсортированные по дате публикации (publishedon), которые внутри ресурса с ID 17, не больше чем на 2 уровня в глубину, с шаблоном 'blogListPost', включая переменные шаблона (TV) и содержимое (content):
[[!getPage? 
&elementClass=`modSnippet` 
&element=`getResources` 
&parents=`17` 
&depth=`2` 
&limit=`10` 
&pageVarKey=`page` 
&includeTVs=`1` 
&includeContent=`1` 
&tpl=`blogListPost`]]
<div class="paging"> 
    <ul class="pageList"> 
        [[!+page.nav]] 
    </ul> 
</div> 
и чанк blogListPost:
 
<div class="blogPost"> 
    <div class="date">[[+publishedon:strtotime:date=`%b %d %Y`]]</div> 
    <h2><a href="[[~[[+id]]]]" title="[[+pagetitle]]">[[+pagetitle]]</a></h2> 
    <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/> 
Поиск и устранение неисправностей
Ничего не происходит
Прежде чем биться головой о стену, убедитесь, что это дополнение установленно на вашем сайте.
Выводится массив атрибутов
Вы забыли указать параметр `&tpl`. Без &tpl сниппет будет пытаться определить ресурсы, но вы не сказали ему как их форматировать. Проверьте, указан ли параметр &tpl в вызове вашего сниппета, как тут:
[[!getResources? &parents=`5` &limit=`5` &tpl=`blogPost`]]
ИЛИ
Вы допустили ошибку в имени чанка. Возможно у вас и указан &tpl, но чанк действительно существует? Если вы указали имя чанка, который не существует, getResources не будет знать как форматировать ваши ресурсы.
ИЛИ
Даже если вы правильно задали параметр &tpl, возможно, вы случайно забыли амперсанд к одному из ваших другихпараметров. Например limit=`5` приведет вызов сниппета к фейлу и атрибуты будут выведены без форматирования. Правильный формат должен быть &limit=`5`.
Тот же самый ресурс выводится несколько раз (1.2.2 и предыдущие релизы)
Если вы видите, что один и тот же ресурс показывается несколько раз, попробуйте убрать параметр &sortbyTV.
Содержимого там нет
Вы извлекаете правильные ресурсы и вы видите какие-топравильно отформатированные результаты, но ваш плейсхолдер
[[+content]]
ничего не выводит. Что происходит? Вам нужно указать параметр &includeContent=`1` чтобы получить содержимое.
Официальная документация
Комментариев нет:
Отправить комментарий