Кастомная галерея by Gallery

В продолжение темы работы с xPDO. Я уже довольно долго не использую стандартные сниппеты [[galAlbum]], [[galItem]] и т.п. Блин, реально все заморочено. А кастомный вывод какой-то сделать — это вообще высший пилотаж. Но компонент Gallery использую очень активно, чисто для управления галереями в админке, а вывод галерей пишу сам. Вот сегодня сделал очередную галерейку и хочу показать листинг сниппет.

Итак, сниппет:

$output = '';

// Получаем все элементы
$q = $modx->newQuery('galItem');
$q->join('galAlbumItem', 'AlbumItems');
$q->where(array(
    'AlbumItems.album' => $album,
));
if(!$items = $modx->getCollection('galItem', $q)){
    return;
}

// Регистрируем скрипты
$assets_url = $modx->getOption('assets_url', null);
$modx->regClientCSS("{$assets_url}js/lib/colorbox/style/1/colorbox.css");
$modx->regClientStartupScript("{$assets_url}js/lib/colorbox/jquery.colorbox-min.js");
$modx->regClientStartupScript("<script type=\"text/javascript\">
$(document).ready(function(){
    //Examples of how to assign the ColorBox event to elements
        $('.gallery').colorbox({
        rel:'gallery'
        ,'current': ''
        });
});     
</script>", true);

// Проходим по каждому элементу и набиваем в шаблоны
$x = 0;
$inRow = 3;
$rowClass = "row flow";
$itemClass = "columns four";

$rowOutput = '';
foreach($items as $item){
    $x++;
    // print_r($item->toArray());   
    $item = $modx->getChunk('SiteGalleryItemTpl', array(
        'class'     => $itemClass,
        'title'     => $item->get('name'),
        'src'       => $item->get('absoluteImage'),
    ));
    
    $rowOutput  .= $item;
    
    if($x == $inRow){
        $output .= $modx->getChunk('SiteGalleryRowTpl', array(
            'class'     => $rowClass,
            'wrapper'   => $rowOutput,
        ));
        $x = 0;
        $rowOutput = '';
    }
}

return $output;

Чанк SiteGalleryRowTpl

<div class="[[+class]]">[[+wrapper]]</div>

Чанк SiteGalleryItemTpl

<div class="galItem [[+class]]">
    <div class="title"><span>[[+title]]</span></div>
    <a href="[[+src]]" class="gallery" title="[[+title]]">
        <img src="/assets/components/site_gallery/connector.php?action=web/image/gallery/small&src=[[+src]]"/>
    </a>
</div>

Как видно, для кастомной галереи не нужно писать много кода.