При вызове стандартного сниппета (3 штуки на одной странице), возникла проблема отлавливания плейсхолдеров. Плейсхолдеры не обновлялись после каждой итерации. Решил не тратить много времени на решение неизвестной проблемы, написал свой сниппет. Данный сниппет выводит информацию из нескольких альбомов одновременно.

 

Параметр Описание По умолчанию
ids ID альбомов через запятую  
tpl

Чанк для каждого элемента.

Плейсхолдеры: id - ID альбома, name - название альбома, url - ссылка на картинку

 

Создаем новый сниппет с названием gallery_items

<?php
$albums = [];
$path = '/assets/gallery/';

$modx->addPackage('gallery', MODX_CORE_PATH . 'components/gallery/model/');

//trim space
if ($ids) {
    $ids = explode(',', $ids);
    $ids = array_map('trim', $ids);
}

$items = $modx->getCollection('galAlbumItem', [
    'album:IN' => $ids
]);

foreach ($items as $item) {
    $album = $item->getOne('Album');
    $image = $item->getOne('Item');

    //get array of albums with items
    if (!array_key_exists($album->id, $albums)) {
        $albums[$album->id] = [
            'id' => $album->id,
            'name' => $album->name,
            'items' => []
        ];
    }

    //push items
    array_push($albums[$album->id]['items'], $path . $image->filename);
}


//get output
foreach ($albums as $album) {
    foreach ($album['items'] as $url) {
        $output .= $modx->getChunk($tpl, [
            'id' => $album['id'],
            'name' => $album['name'],
            'url' => $url
        ]);
    }
}

return $output;

Вызов сниппета:

[[!gallery_items?
 &ids=`1,2,3`
 &tpl=`tpl.gallery`
]]
← EasyCalc примеры по заявкам желающихSQL Ошибка: Could not create table... Incorrect table name 'index' 1103 →