Вывод ресурсов через 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.Как правильно вывести этот сниппет, чтобы он показывал значения для ресурсов которые выводятся, а не для того документа где выводится?
Комментарии: 4
Потому что сниппет нужно вызывать как
И тогда вот эта строка не нужна совсем
Только дальнейший код убьёт всю производительность, достигнутую pdoResources.
Это при том, что данные уже выбранных ресурсов и так доступны у тебя в чане, в которым ты вызываешь свой сниппет. В моём примере передаётся только id, но так можно передать и другие свойства.
Да и лишний вызов сниппета test 10 раз из чанка — тоже дополнительные тормоза.
В общем, лучше напиши, чего ты хочешь добиться, может чего поумнее подскажут.
[[!test?id=`[[+id]]`]]
то есть, передавать данные уже выбранного ресурса внутрь сниппета.И тогда вот эта строка не нужна совсем
$id = $modx->resource->get('id');
Только дальнейший код убьёт всю производительность, достигнутую pdoResources.
$res = $modx->getObject('modResource',$id);
Ты выбрал 10 нужных ресурсов за один запрос, а потом еще за 10 дополнительных запросов выбираешь каждый из них отдельно.Это при том, что данные уже выбранных ресурсов и так доступны у тебя в чане, в которым ты вызываешь свой сниппет. В моём примере передаётся только id, но так можно передать и другие свойства.
Да и лишний вызов сниппета test 10 раз из чанка — тоже дополнительные тормоза.
В общем, лучше напиши, чего ты хочешь добиться, может чего поумнее подскажут.
Спасибо за ответ,
хочу чтобы исчезала ссылка на ресурс по истечению срока createdon + 15 дней.
хочу чтобы исчезала ссылка на ресурс по истечению срока 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>';
Прочитай про &prepareSnippet — bezumkin.ru/sections/components/1841/
большое спасибо
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.