Сниппет вывода path первого изображения из альбома компонента Gallery
Для начала создадим новый тип TV вот по этой инструкции — community.modx-cms.ru/blog/tips_and_tricks/8733.html
Далее создадим сниппет, который будет выводить наше первое изображение из альбома заполненного в дополнительных полях ресурса:
[[!getGalleryImage? &album=`[[*hotelPhotos]]`&toPlaceholder=`hotelFirstImage`]]
[[*hotelPhotos]] — это TV с id альбома Gallery (с тем новым типом TV, который мы создали по инструкции выше)
Также мы можем указать параметр «rank», он будет отвечать, какое по счёту изображение от начала нам вывести. Допустим если укажем "&rank=`1`", то получим второе по счёту от начала изображение, укажем «2» — получим третье изображение и т.д.
Далее создадим сниппет, который будет выводить наше первое изображение из альбома заполненного в дополнительных полях ресурса:
<?php
// Сниппет получения пути изображения из указанного альбома компонента Gallery
$album = $modx->getOption('album', $scriptProperties, '1'); // проверяем, указан ли id альбома.. (по умолчанию - id альбома = 1)
$rank= $modx->getOption('rank', $scriptProperties, '0'); // проверяем, указан ли номер картинки в альбоме, по счёту от начала, которую нужно вывести.. (по умолчанию - первая)
$toPlaceholder = $modx->getOption('toPlaceholder', $scriptProperties, ''); // в плейсхолдер
$where=array();
$where['album'] = $album;
$where['rank'] = $rank;
$gAlbumItemObj = $modx->getObject("galAlbumItem", $where );
$pathToImage = ''; // Сохраняем пустоту, чтобы в случае пустого альбома обновить плейсхолдер..
// Проверяем, получили ли мы результат.. проще говоря - есть ли такая картинка в таком альбоме
if(is_object($gAlbumItemObj)) {
$gItemObj = $modx->getObject("galItem", array('id' => $gAlbumItemObj->get('item')) );
$pathToImage = '/assets/gallery/' . $gItemObj->get('filename');
//print_r($gItemObj->toArray()); die;
}
if($toPlaceholder!='') {
$modx->setPlaceholder($toPlaceholder, $pathToImage);
} else {
return $pathToImage;
}
Пример запроса к сниппету:[[!getGalleryImage? &album=`[[*hotelPhotos]]`&toPlaceholder=`hotelFirstImage`]]
[[*hotelPhotos]] — это TV с id альбома Gallery (с тем новым типом TV, который мы создали по инструкции выше)
Также мы можем указать параметр «rank», он будет отвечать, какое по счёту изображение от начала нам вывести. Допустим если укажем "&rank=`1`", то получим второе по счёту от начала изображение, укажем «2» — получим третье изображение и т.д.