Галерея в 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          getResources заготовки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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