Вывод migx tv через fenom дочерних ресурсов
Подскажите как реализовать вывод полей ресурса ид 15 и его всех дочерних ресурсов?
Сейчас вид такой:
Сейчас вид такой:
{set $rows = json_decode(15 | resource : 'migx_tv', true)}
{foreach $rows as $row}
{$row.image}
{/foreach}
Комментарии: 8
Для вывода ресурсов можно воспользоваться сниппетом pdoResources
В чанке получаем tv каждого ресурса, для этого прописываем название tv в параметре includeTVs
В чанке получаем tv каждого ресурса, для этого прописываем название tv в параметре includeTVs
Да, спасибо! Только есть ли возможность сформировать json массив из нескольких ресурсов?
{set $parent_data = json_decode(15 | resource : 'migx_tv', true)}
{set $childs = $_modx->getResources([
'parent' => 15
],[])}
{set $childs_data = []}
{foreach $childs as $child}
{set $childs_data = array_merge($childs_data, json_decode($child['migx_tv']))}
{/foreach}
{set $all_data = array_merge($parent_data, $childs_data)}
{foreach $rows as $row}
{$row.image}
{/foreach}
Можно как — то так.
Сергей, добрый день!
Ваш пример, что-то не работает. У меня похожая проблема. Необходимо вывести у первых трех дочерних ресурсов MIGX поля. Вот так выводит:
Ваш пример, что-то не работает. У меня похожая проблема. Необходимо вывести у первых трех дочерних ресурсов MIGX поля. Вот так выводит:
{set $rows = json_decode(17 | resource : 'projects', true)}
{foreach $rows as $row}
{$row.imgpro}{$row.loc}
{/foreach}
Но, он выводит поля только у 17 ресурса, а как сделать вывод у дочерних 5 ресурса, не знаю. Помогите, пожалуйста!
Включите системную настройку которая бы разрешала использовать php функции в fenom.
Думаю что у вас не работает из-за функции array_merge
Думаю что у вас не работает из-за функции array_merge
Спасибо! Все получилось.
Ну конечно можно))))
Обратите внимание, что ключи полученного массива — это id ресурса. Но можно и не указывать ключ))
{'pdoResources' | snippet: [
'parents' => 7,
'includeTVs' => 'migx_tv',
'tpl' => '@INLINE {set $output = $_modx->getPlaceholder("output")?:[]}{set $output[$id] = $_pls["tv.migx_tv"]}{$_modx->setPlaceholder("output", $output)}'
]}
И получаем плейсхолдер с готовым массивом{$_modx->getPlaceholder('output')}
Обратите внимание, что ключи полученного массива — это id ресурса. Но можно и не указывать ключ))
set $output[$id] = ...
Спасибо! Все получилось.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.