Добрый вечер!
Необходима помощь с Gallery на Modx Revo. Точнее с выводом содержимого вложенных альбомов.
Есть галлерея с альбомами, в которых имеются вложенные альбомы. В идеале изображений кроме как во вложенных альбомах не будет.
Задача: Вывести отдельно корневые альбомы галереи. По выбору одного из них отображется блок с заголовками вложенных альбомов и их содержимым соответственно.
Вот примерная схема того, что надо получить:
? Что «творю» я:
Код страницы, на которой все должно выводиться [[!Gallery? &toPlaceholder=gallery
]]
[[!GalleryAlbums? &toPlaceholder=galleries
]]
[[!GalleryAlbums? &rowTpl=galSubAlbumRowTpl
&parent=[[+gallery.id]]
&showAll=0
&showInactive=1
&toPlaceholder=subgalleries
]]
[[!+gallery:notempty=`
<h1><a href="[[~[[*id]]]]">[[+gallery.name]]</a></h1> [[+subgalleries]] `]] Код чанка galSubAlbumRowTpl <div id="catalog"> <p>[[+name]]</p> </div> [[!Gallery? &album=`[[+name]]`]] На выходе получаю названия вложенных альбомов, а вместо их изображений изображения из их корневого альбома(либо ничего, если в корневом альбоме нет изображений). Помогите, пожалуйста, достучаться до изображений вложенных альбомов.Почитайте это, может поможет.
Кастомная галерея, дело хорошее, были бы покрепче знания. Подобное обращение в galSubAlbumRowTpl мне выдает обложки вложенных альбомов. <div id="catalog">
<p>[[+name]]</p> </div> [[!Gallery? &containerTpl=`SiteGalleryItemTpl` ]] Но как Ваш код переработать/использовать для вывода их содержимого, до меня не доходит.К сожалению, с плейсхолдерами я не помогу. Галерея в этом плане весьма не простая, и не прозрачен механизм появления тех или иных плейсхолдеров. Поэтому придется вам или самим ковырять, или ждать кто подскажет если подскажет, или платный проект объявлять.
А если по средством xPDO, не подскажите как сразу к элементам вложенных запрос оформить, а не текущему альбому?
Проблема состояла всего лишь в одном условии сниппета Gallery if ($modx->getOption('checkForRequestAlbumVar',$scriptProperties,true)) { if (!empty($_REQUEST[$albumRequestVar])) $scriptProperties['album'] = $_REQUEST[$albumRequestVar]; } Решилась задача на этом этапе очень некрасиво, но была срочная необходимость, поэтому за грамотностью не гнался: if ($modx->getOption('checkForRequestAlbumVar',$scriptProperties,true)) { if($scriptProperties['album']!="") $_REQUEST[$albumRequestVar]=$scriptProperties['album']; if (!empty($_REQUEST[$albumRequestVar])) $scriptProperties['album'] = $_REQUEST[$albumRequestVar]; } Код чанка особо не изменился: <div id="catalog">
<p>[[+name]]</p> </div> [[!Gallery? &album=`[[+id]]`]] А для того, чтобы выводились изображения корневых альбомов, не имеющих вложенных альбомов, немного видоизменил код самой страницы: [[!Gallery? &toPlaceholder=`gallery`]] [[!GalleryAlbums? &toPlaceholder=`galleries`]] [[!GalleryAlbums? &rowTpl=`galSubAlbumRowTpl` &parent=`[[+gallery.id]]` &showAll=`0` &showInactive=`1` &toPlaceholder=`subgalleries`]] <div style="float: right"> <h2>Galleries</h2> <ul> [[+galleries]] </ul> </div>[[!If?
&subject=[[+subgalleries]]
&operator=empty
&then=[[+gallery]]
&else=[[+subgalleries]]
]]
Как приятно все-таки самому суметь сделать, правда? :)
Согласен, но когда на решение задач есть достаточно времени оно вдвойне приятней.
Тоже верно. Но у других так же может не быть времени на то, чтобы разбираться в чужих скриптах.
Так никто ж насильно и не заставляет в чужом коде копаться. Бывает, что просто сталкивался с подобным и готов с ходу ответить.
В любом случае, Спасибо, что дали наводку в сниппетах покапаться.
Не за что!
Возник еще вопрос… Есть ли возможность сортировать изображения по тегам?
Фильтровать или сортировать? Но в любом случае, нативно — нет. Писать только свой переопределяющий процессор, чтобы дописать немного построение запроса. Тогда как минимум фильтровать получится. С сортировкой сложнее.
На сайте zavodnsk54.ru сделана возможность вложенных галерей.