Вывод migx tv через fenom дочерних ресурсов

Подскажите как реализовать вывод полей ресурса ид 15 и его всех дочерних ресурсов?

Сейчас вид такой:

{set $rows = json_decode(15 | resource : 'migx_tv', true)}
{foreach $rows as $row}
    {$row.image}
{/foreach}
Александр
27 июня 2018, 03:18
modx.pro
3 065
0

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

Aleksandr Huz
27 июня 2018, 11:01
0
Для вывода ресурсов можно воспользоваться сниппетом pdoResources
В чанке получаем tv каждого ресурса, для этого прописываем название tv в параметре includeTVs
    Александр
    27 июня 2018, 11:07
    0
    Да, спасибо! Только есть ли возможность сформировать json массив из нескольких ресурсов?
      Сергей
      27 июня 2018, 13:07
      0
      {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}
      Можно как — то так.
        Алексей
        27 июня 2018, 14:23
        0
        Сергей, добрый день!
        Ваш пример, что-то не работает. У меня похожая проблема. Необходимо вывести у первых трех дочерних ресурсов MIGX поля. Вот так выводит:
        {set $rows = json_decode(17 | resource : 'projects', true)}
        {foreach $rows as $row}
            {$row.imgpro}{$row.loc}
        {/foreach}
        Но, он выводит поля только у 17 ресурса, а как сделать вывод у дочерних 5 ресурса, не знаю. Помогите, пожалуйста!
          Баха Волков
          27 июня 2018, 19:00
          0
          Включите системную настройку которая бы разрешала использовать php функции в fenom.

          Думаю что у вас не работает из-за функции array_merge
            Алексей
            28 июня 2018, 09:40
            0
            Спасибо! Все получилось.
        Aleksandr Huz
        27 июня 2018, 19:13
        0
        Ну конечно можно))))
        {'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] = ...
          Алексей
          28 июня 2018, 09:41
          0
          Спасибо! Все получилось.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8