Вывод ресурсов через pdoTools + сниппет

Имеется набор ресурсов, который выводится через pdoTools

[[!pdoPage?
    &parents=`2`
    &depth=`2`
    &hideContainers=`1`
    &limit=`10`
    &tpl=`news`
    &includeTVs=`img`
    &sortby=`pub_date`
]]
и имеется вот такой сниппет, назовём test

<?php
$id = $modx->resource->get('id');
$res = $modx->getObject('modResource',$id);
echo '<p>Дата создания: ' . $res->get('createdon') . '</p>'; 
return;
Если я вставляю
[[!test]]
в шаблоне news, то выводится значения, но они все одинаковые и принадлежат тому ресурсу, где выводится pdoTools.
Как правильно вывести этот сниппет, чтобы он показывал значения для ресурсов которые выводятся, а не для того документа где выводится?
Bluetenstadt
27 июня 2016, 10:27
modx.pro
2 388
0

Комментарии: 4

Василий Наумкин
27 июня 2016, 14:16
1
+2
Потому что сниппет нужно вызывать как
[[!test?id=`[[+id]]`]]
то есть, передавать данные уже выбранного ресурса внутрь сниппета.
И тогда вот эта строка не нужна совсем
$id = $modx->resource->get('id');

Только дальнейший код убьёт всю производительность, достигнутую pdoResources.
$res = $modx->getObject('modResource',$id);
Ты выбрал 10 нужных ресурсов за один запрос, а потом еще за 10 дополнительных запросов выбираешь каждый из них отдельно.

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

Да и лишний вызов сниппета test 10 раз из чанка — тоже дополнительные тормоза.

В общем, лучше напиши, чего ты хочешь добиться, может чего поумнее подскажут.
    Bluetenstadt
    27 июня 2016, 14:49
    0
    Спасибо за ответ,

    хочу чтобы исчезала ссылка на ресурс по истечению срока createdon + 15 дней.
    $date = new DateTime($res->get('createdon'));
    $date->add(new DateInterval('P15D'));
    echo '<p>Окончание Widerruf: ' . $date->format('Y-m-d H:i:s') . '</p>';
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4