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

В продолжение темы работы с xPDO. Я уже довольно долго не использую стандартные сниппеты [[galAlbum]], [[galItem]] и т.п. Блин, реально все заморочено. А кастомный вывод какой-то сделать — это вообще высший пилотаж. Но компонент Gallery использую очень активно, чисто для управления галереями в админке, а вывод галерей пишу сам. Вот сегодня сделал очередную галерейку и хочу показать листинг сниппет. Итак, сниппет: <?php $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': '' }); });
", 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

[[+wrapper]]
Чанк SiteGalleryItemTpl
[[+title]]

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