Кастомная галерея 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 Как видно, для кастомной галереи не нужно писать много кода.