Как получить данные ресурса по id MODX или как вывести данные одного ресурса в другом

Встала задача: получить данные одного ресурса в другом. Стало понятно что для этого нам нужно получить ID, и после этого протаскивать остальную информацию. Использовать будем пакет getResources. Первым делом создаем TV с именем chekbox2 с типом ввода флажки, типом вывода "разделитель", где разделитель это запятая и содержимым:

@EVAL return $modx->runSnippet('getResources',array('parents'=>23,'depth'=>5,'limit'=>0,'where'=>'{"template:=":4}','sortby'=>'{"id":"ASC"}','tpl'=>'@INLINE [ [#[ [+parent]].pagetitle]] > [ [+pagetitle]]==[ [+id]]','outputSeparator'=>'||'));

где parents - id ресурса из которого забираем дочерние документы, шаблон тоже понятно)

По итогу получим такую картину в админке:

 

 Далее в шаблоне, в котором хотим вывести выбранные ресурсы вводим код:

[ [!pdoResources? &parents = `0` &resources = `[ [*chekbox2]]` &depth = `0` &limit = `0` &includeTVs = `image` &tplWrapper = `@INLINE <table>[ [+output]]</table>` &tpl = `gen-obj`]]

Где &tpl=`gen-obj` - это название чанка, выводящий данные. И может понадобиться &includeContent=`1` если хотите протащить область контента. Ну и теперь сам чанк, ответственный за вид выводимых ресурсов и TV:

<tr>
<td><a href="[ [~[ [+id]]]]"><img src="[ [+tv.image]]" style="width:auto;float:left;margin:0 10px 0 0;"></a></td>
<td><a href="[ [~[ [+id]]]]">[ [+pagetitle]]</a></td>
<td>[ [+introtext]]</td>
</tr>

Как понимаете у меня есть дополнительное TV поле image (это картинка). В общем это отличное решение без написания всяких дополнительных сниппетов (в интернете все предлагают писать сниппеты, по крайней мере я ничего подобного не нашел) и прочего. Работает четко и может быть использовано для любых нужд: популярные новости по галочке на главной странице, или крепить объекты к застройщику как в моем случае. Чанк разумеется можно править как угодно.


Комментарии (4)

  1. Павел:
    31 Oct 2017г. в 13:01

    Доброго времени суток, у вас написано что в шаблоне необходимо вывести этот код
    @EVAL return $modx->runSnippet('getResources',array('parents'=>23,'depth'=>5,'limit'=>0,'where'=>'{"template:=":4}','sortby'=>'{"id":"ASC"}','tpl'=>'@INLINE > ==','outputSeparator'=>'||'));
    Но при написание его в шаблоне он на странице отображается так же как и в админке и ни чего не выводит. Что можно сделать?

  2. admincms:
    31 Oct 2017г. в 14:08

    Павел, спасибо за ваш вопрос. В действительности в статье была опечатка. Статью поправили.

  3. Любава:
    02 May 2018г. в 13:10

    Здравствуйте! Подскажите почему может не срабатывать checkbox?
    Код:
    в переменной:
    @EVAL return $modx->runSnippet('getResources',array('parents'=>1,'depth'=>10,'limit'=>0,'where'=>'{"template:=":5}','sortby'=>'{"id":"ASC"}','tpl'=>'@INLINE .pagetitle > ==','outputSeparator'=>'||'));
    в шаблоне страницы:
    ` &depth = `0` &limit = `0` &includeTVs = `checkbox,event-name,event-date,event-time,event-cost,event-img-bg,event-img-sm` &tpl = `thumbnail-event`

    В самом ресурсе выбор чекбокса отображается, а на странице выводит все дочерние ресурсы родителя. А нужно чтобы выводил только те, где стоит галочка.

  4. admincms:
    03 May 2018г. в 11:07

    Добрый день!
    Для TV checkbox измените параметр вывода на разделитель и укажите в качестве разделителя запятую. В шаблоне страницы для вывода ресурсов (отмеченных) укажите параметры &parents = `0` &resources = `checkbox`.



Разрешённые теги: <b><i><br>Добавить новый комментарий:


Создание сайтов в студии go-up.info