Галерея в MODx, Вывести обложки альбомов и фотографии

Для началу устанавливаем пакет Gallery.

Вывести обложки альбомов и фотографии

Примерно так, только не забудьте поменять чанки:

[[!GalleryAlbums? 
&toPlaceholder=`GalleryAlbums` 
&limit=`0` 
&albumCoverSort=`rank` 
&prominentOnly=`1`
&rowTpl=`galAlbumRowTpl`
]]
[[!Gallery?
&toPlaceholder=`Gallery`
&checkForRequestTagVar=`1`
&useCss=`0`
&containerTpl=`GalleryAlbumTpl`
&thumbTpl=`galItemThumb`]]
[[+Gallery:isnot=``:then=`<div class="gal-item-wrapper">[[+Gallery]]</div>`:else=`<ul class="gal-albums-wrapper">[[+GalleryAlbums]]</ul>`]]

Особый (отдельный) шаблон для первой или какой-то определенной фото

Есть 2 варианта, который вы можете захотеть. Можете захотеть выводить каждый третий, или каджый второй элемент с особым шаблоном. И если так, то вам достаточно просто указать этот шаблон в &thumbTpl_2=`gallery_tpl_custom`, и все будет работать (нумерация будет пойдет с единицы (&thumbTpl_1)).

Но если у вас друга задача вывести только для картинки под определенным номером отдельный шаблон. К примеру только для первой, то в такой случае придется залезть в код сниппета Gallery и слегка его подправить в двух местах.

//...
if (isset($keyBits[0]) && $keyBits[0] === 'thumbTpl') {
    //if ($i = (int) $keyBits[1]) $nthTpls[$i] = $scriptProperties[$key];    // Эту строчку убирам
    $nthTpls[(int) $keyBits[1]] = $scriptProperties[$key];    // Эту строчку добавляем
}
//...

//...
$thumbTpl = $defaultThumbTpl;
if (isset($nthTpls[$idx])) {
    $thumbTpl = $nthTpls[$idx];
} else {
    foreach ($nthTpls as $int => $tpl) {
        //if ( ($idx % $int) === 0 ) $thumbTpl = $tpl; // Эту строчку убирам
        if ( $idx == $int ) $thumbTpl = $tpl;  // Эту строчку добавляем
    }
}
//...

И вызываем вот так (нумерация идет с нуля):

[[!Gallery?
&album=`[[*gal-item]]`
&useCss=`0`
&thumbTpl=`gallery_item_tpl`
&thumbTpl_0=`gallery_item_tpl_main`
&thumbTpl_1=`gallery_item_tpl_sub`
&thumbTpl_2=`gallery_item_tpl_sub`
]]

Некоторые плейсхолдеры в галереи

  • [[+image_absolute]]
    Изображение без изменений размера. Его можно ресайзить самостоятельно в чанке вот так [[+image_absolute:rezimgcrop=`r-800`]]
  • [[+album]]
    id альбома. Можно использовать чтобы подцепить все изображения в одну галерею fancybox - ...class="fancybox" rel="gallery_[[+album]]"...

Комментарии (5)

  1. Артем 01 ноября 2020, 16:09 # 0
    А как выводить на «главной», только некоторые id альбомов, а не все?
    1. Игорь 24 июля 2023, 10:09 # 0
      Проект tsknnmgc.beget.tech

      Modx Gallery. Блок на главной — «ГАЛЕРЕЯ НАШИХ РАБОТ» содержит некоторое количество альбомов, внутри которых фотографии. Если выводить стандартным чанком «galAlbumRowWithCoverTpl», то выводятся заглавные картинки альбомов.

      А как сделать при клике на альбом, чтобы открывалась галерея с фотографиями (содержимым альбома)…? не понимаю… Сейчас ссылка в чанке на это выглядит так…

      <a href="[[+url:is=``:then=`[[+image]]`:else=`[[+url]]`]]" [[+link_attributes]]>
      [[+image:notempty=`<img src="[[+image]]" [[+cls:notempty=`class="[[+cls]]"`]] alt="[[+title]]" />`]]


      Как поменять ее в нужную сторону?
      1. Игорь 25 июля 2023, 09:32 # 0
        Проект tsknnmgc.beget.tech

        Modx Gallery. Блок на главной — «ГАЛЕРЕЯ НАШИХ РАБОТ» содержит некоторое количество альбомов, внутри которых фотографии. Если выводить стандартным чанком «galAlbumRowWithCoverTpl», то выводятся заглавные картинки альбомов.

        А как сделать при клике на альбом, чтобы открывалась галерея с фотографиями (содержимым альбома)…? не понимаю… Сейчас ссылка в чанке на это выглядит так…

        <a href="[[+url:is=``:then=`[[+image]]`:else=`[[+url]]`]]" [[+link_attributes]]>
        [[+image:notempty=`<img src="[[+image]]" [[+cls:notempty=`class="[[+cls]]"`]] alt="[[+title]]" />`]]

        Как поменять ее в нужную сторону?
        1. Максим 24 августа 2023, 16:31 # 0
          Простите, можете помочь.
          Все сделал как у Вас, но почему то &thumbTpl_0 не выводит. Если &thumbTpl_1, или &thumbTpl_2 и т.д., то все норм, выводит второе, третье и т.д. фото с указанным шаблоном. Но именно &thumbTpl_0 не срабатывает и ему присваивается стандартный шаблон.
          Подскажите, в чем может быть проблема?
          1. Максим 24 августа 2023, 17:09 # 0
            В общем, наверное, проблема была в замененной строке
            $nthTpls[(int) $keyBits[1]] = $scriptProperties[$key];
            Заменил
            $keyBits[1]
            на
            $keyBits[0]
            все заработало.
            Т.е. правильно:
            $nthTpls[(int) $keyBits[0]] = $scriptProperties[$key];
            Только начало теперь не с 0, а с 1.
            Т.е.
            &thumbTpl_1
            — это будет шаблоном для первой миниатюры
          *Комментарий будет опубликован после проверки модератором

          Комментарии easyComm

          Евгений 18 октября 2018, 03:09

          Последний допил для изменения шаблона n-ному элементу КАЙФОВЫЙ! Благодарю

          Похожие статьи

          Генератор настроек MIGX

          Документация на русском по MODX MIGX

          pdoPage и getImageList - Постраничная навигация MIGX

          Подсказки по работе и заготовки для MiniShop2

          Импорт и экспорт в MiniShop2. Реализация 1

          Как включить HTTPS (SSL) в MODX - Подробная инструкция

          Генерация YML для выгрузки в маркет

          Примеры работы с API MODX

          Примеры выборки where, optionFilters, innerJoin

          pThumb - ресайз изображений. Примеры использования.

          Расширение свойств товаров minishop2

          Примеры использования

          Сайт на обслуживании (выключить сайт)

          Добавить в письмо контактную информацию

          Вывести getImageList только если он не пустой

          Тип поля "Список ресурсов" (resourcelist) с ограничением по родителю (parents)

          Оформление и настройка easyComm. Комментарии и отзывы на сайте.

          Поиск на сайте с пакетом SimpleSearch

          Подсчет и вывод количества потомков ресурса в MODX

          Простая и симпатичная галерея fancybox

          Галерея. Вывести обложки альбомов и фотографии

          Вывод tv-параметров в формате -

          Отредактировать письмо о заказе - добавить ТВ поле, или что-то еще

          Quip для MODX. Более рабочий вариант

          Сниппет для вывода размера и расширения файла

          pdoResources Заготовки для работы

          Простой аудио-плеер HTML5

          Вывести список всех опций MiniShop2

          Слайдер Slick slider в контенте ресурса

          Как контролировать кэш CSS и скриптов

          Изменить цену на товар в зависимости от количества при добавлении в корзину minishop2

          Подключить MODX в стороннем PHP файле

          Простейшая авторизация

          Как создать ресурс процессором $modx->runProcessor('resource/create', $props)

          Красивое адаптивное меню под pdoMenu

          Массово обновить ТВ, или другое поле через базу

          Сообщение о том, что сайт использует Cookie

          Создать свою страницу в админке

          Изменить формат номера заказа

          Получить grandparent. Вывести родитель родителя

          Симпатичный список файлов, загружаемых к ресурсу через MIGX

          Установить шаблон по-умолчанию для новых, создаваемых ресурсов

          Вывести все доступные плейсхолдеры

          Отредактировать шаблон письма

          Создать источник файлов

          Добавить скрипт перед тегом body

          Общая сумма по каждому товару в корзине Minishop2

          Создать раздел с паролем на сайте MODX

          Что делать если ее приходит почта администратору

          Фильтрация по TV параметрам в msProducts

          Дата на русском

          FontAwesome - часто используемые иконки для шаблонов MODX

          Создать пакет с пользовательской таблицей

          Заготовки для работы

          Загрузка сниппета после загрузки страницы через AjaxSnippet

          Курсы валют с cbr.ru на PHP

          getResources заготовки

          Обязательный чекбокс при оформлении заказа

          Обработка остатков заказа в miniShop2

          Соответствие названия классов с названиями таблиц в MySQL

          Разбить вывод pdoResources на несколько колонок (блоков)

          Баннеры с использованием BannerY

          Обновить alias (псевдоним) у всех ресурсов

          CSS для постраничной навигации pdoPage

          Вывести время загрузки (формирования) страницы

          Расширить таблицу site_content (объект modResource) за 5 минут

          Вырезать кавычки — фильтр-сниппет MODX

          Счетчик посещений и скачиваний для сортировки ресурсов

          Бесплатная доставка от 5000 рублей в MiniShop2

          Динамическое поле emailSubject в FormIt

          Скрыть информацию о том, что сайт работает на MODX

          Отсортировать ресурсы по количеству комментариев Quip MODx

          Изменить цену на товар, если в корзине лежит товар из особой категории minishop2

          Создать редирект через autoRedirector API

          Cортировать по списку id в pdoResources и pdoTools

          Ответ для сервиса moneta.ru

          Вывести 404 ошибку по настройке TV MODX

          Email сделать не обязательным полем

          Как разместить исходный код сниппета на сайте, в документации

          Ускорить установку MODX revo до пары кликов

          Постраничная навигация — набор параметров и CSS PdoPage

          Сделать все элементы статичными для Git и IDE

          Не работает подгрузка товаров ajax mfilter2 на мобильном

          Сделать поле размер обязательным

          Настройка стилей для комментариев Tickets

          Подключить текстовой редактор к доп. полям ресурса

          Динамическая замена шаблона ресурса - плагин

          Кастомный чанк для AdminPanel

          Разместить корзину внутри блока с оформлением заказа

          Плагин для формирования замороженных URL с редиректом

          xPDO Выборка из одной таблицы с зацепкой значения из другой

          Приветственный экран / заглушка на сайт

          Вложенные условия в xPDO MODX

          Вывести список всех родителей в ТВ поле ресурса

          Как получить данные пользователя сразу после авторизации через API

          Вывести список всех емэйлов miniShop2

          Если getParentIds не работает в плагине

          Контролировать кэширование файлов CSS и JS MiniShop2

          Не приходят / не отправляются письма - в чем причина?

          Кэширование в MODX: использование $modx->cacheManager

          Наш сайт использует куки, нажмите «ОК» если вы не против
          OK