Вывод дочерних документов (pdoResources)

Есть страница, на которую при помощи pdoResources + TV должны выводиться изображения. Каждое изображение — это отдельный дочерний документ страницы.

В принципе, тут сложного ничего нет:
В коде шаблона страницы, на которой будут выводиться картинки, пишу:

<div class="[[*TV]]"> (об этом будет чуть ниже)
<ul>
[[pdoResources?
  &depth=`0`
  &limit=`0`
  &tpl=`чанк с кодом элемента списка (<li><img src="[[+tv.picture]]"></li>)`
  &includeTVs=`picture`
  &includeContent=`1`
  &sortby=`{"publishedon":"ASC"}`
]]
</ul>
</div>

Но есть нюанс.

Блок div (тот, что был в коде) имеет переменный CSS-класс, в котором прописано количество колонок, которое может быть у этого блока. К примеру, от 1 до 4. При помощи TV в виде выпадающего списка с одиночным выбором, можно выбрать один из CSS-классов.

Проблема в том, что мне нужно, чтобы таких блоков на странице было больше одного. Но сообразить, как это реализовать, не получается.

По сути нужно сделать так, чтобы у страницы А создавался дочерний документ Б, в котором можно из списка выбрать имя CSS-класса для блока, затем уже в документе Б создавать дочерний документ (или несколько), каждый из которых и будет отдельной картинкой. При этом должна быть возможность создать другой дочерний документ у этой же страницы А (назовем его Б2), опять же выбрать имя CSS-класса, после чего нагенерить новых дочерних документов-картинок.

Буду благодарен за подсказку.
serdeles
05 апреля 2024, 01:13
modx.pro
271
0

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

Артур Шевченко
05 апреля 2024, 22:26
0
А зачем картинку делать дочерним документом? Чем тебе migx не угодил?
    serdeles
    05 апреля 2024, 22:34
    0
    Потому что речь идет не о галерее. И потому что на одной странице будут размещаться картинки в несколько колонок (от одной до четырех). Картинки разного размера и формата. Соответственно, для их вывода разработаны CSS-классы, которые в зависимости от количества колонок будут применяться к элементам списка.

    Задача нестандартная, поэтому и попросил тут совета.
      Артур Шевченко
      05 апреля 2024, 23:00
      +1
      Не понимаю при чём тут галерея, размер и формат картинок. Если все картинки связаны с один конкретным ресурсом, то нужно создать TV типа migx, в котором будет другой migx. Покажу на примере массива
      [
          [
              'class' => 'col-1',
              'images' => [
                  'image-1.jpg',
                  'image-2.jpg'
              ]
          ],
          [
              'class' => 'col-2',
              'images' => [
                  'image-1.jpg',
                  'image-2.jpg'
              ]
          ],
      ]
      И в шаблоне это можно вывести так
      {foreach $blocks as $block}
      <div class="{$block.class}">
          <ul>
          {foreach $block.images as $img}
              <li><img src="{$img}"></li>
          {/foreach}
          </ul>
      </div>
      {/foreach}
      Ну или использовать сниппет getImageList для обработки полей типа migx.
      В чём нестандартность задачи неясно, может быть ты что-то не договариваешь?
        serdeles
        05 апреля 2024, 23:08
        0
        Спасибо! Буду пробовать это решение. Нестандартная она для меня, так как я не так плотно и часто занимаюсь разработкой ))

        Просто там может быть вероятность размещения не только изображений, но и, к примеру, встроенных видеороликов или просто текстовых блоков.
          Артур Шевченко
          06 апреля 2024, 09:45
          0
          Сделай просто тестовое поле и пишу туда путь к файлу.
            serdeles
            06 апреля 2024, 10:31
            0
            Спасибо, попробую.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6