Создание галереи в MODx Revolution
Почти на всех сайтах MODX используется галерея изображений. В этом посте я опишу как реализовать данное решение с помощью дополнения Gallery MODX Revolution. Для асинхронной загрузки изображений я буду использовать JAIL (асинхронный jQuery загрузчик изображений) и Lazy Load для постепенной загрузки изображений.
Для того чтобы создать галерею Gallery MODX Revolution нам понадобится
- MODX Revolution;
- дополнение Gallery MODX Revolution;
- дополнение IF MODX Revolution;
- Colorbox;
- Lazyload.
Не буду объяснять как всё установить из вышеприведенного — ставьте как и где вам удобно. Я предпочитаю assets/templates/site, но для демонстраций я использую assets/templates/demo. Для простоты я просто перетащил загруженные папки и файлы в папку demo.

Итак приступим! Для создания Gallery MODX Revolution Вам необходимо:
- Загрузить на сайт Ваши изображения - менеджере MODX зайдите в Components/Gallery и загрузите ваши изображения, при этом убедитесь в том, что поставили галочку напротив active.
- Создать 3 чанка, как указанно ниже
DemoGalAlbumRowTpl
DemoGalItemThumb
DemoGalleryAlbumTpl
Для тестирования результатов вывода Gallery MODX Revolution можно использовать упрощённый шаблон, указанный ниже. Убедитесь в том, что выставлены правильные пути к файлам (проверить это можно через Firebug).
Вот пожалуй и всё. Пожалуйста, снизу можете прокомментировать данный пост.
05-10-2011 уроки MODx Revolution Gallery Виктор Матушевский
DeN
17.11.2011 08:37Замени строчку $("img„).lazyload({effect : „fadeIn”}); на $("img").lazyload({effect : "fadeIn"}); иначе не будет работать скрипт))
Viktorminator
17.11.2011 12:46Спасибо! Поправил скрипт.
rezvik
18.11.2011 03:48в Вашем demo варианте, при увеличении фото меню навигации остается активным а не прячется на заднем плане.
Lu
20.12.2011 21:57Спасибо за пост, все толково.
А кто-нибудь знает, реально сделать так, чтобы при загрузке картинок в галерею у них не менялись названия? Меня это беспокоит, хочу под гугл картинки оптимизировать сайт, да и специфика такая, что в основном идут галереи изображений.
Viktorminator
20.12.2011 22:34Можно скопировать одно изображение, посмотреть куда оно скопировалось и потом, через файловый менеджер остальные залить. Я давно так вроде делал.
Александр
17.01.2012 21:45Спасибо за статью и вообще за все статьи! Очень помогают! :)
А можно сделать так, чтобы выводилось сразу несколько галерей на странице? Я попробовал, но не вышло - получаются дубли одной и той же галереи :(
Александр
17.01.2012 23:07Ой, извиняюсь))) Я делал другой вызов сниппета из другой статьи. Там через TV подставлялась галерея и одна лишь. А вызов, который тут указан как раз отображает сразу несколько галерей.
Тогда перефразирую вопрос. Кто-нибудь знает как сделать вызов нескольких галерей, если вызывать через переменную шаблона? Я использовал такой вызов:
[[!GalleryAlbums? &toPlaceholder=`GalleryAlbums` &limit=`0` &albumCoverSort=`rank` &prominentOnly=`0` &rowTpl=`GalAlbumRowTpl` &thumbWidth=`195` &thumbHeight=`140`]]
[[!Gallery? &album=`[[*galery_name_1]]` &checkForRequestTagVar=`1` &toPlaceholder=`Gallery` &useCss=`0` &containerTpl=`GalleryAlbumTpl` &thumbWidth=`140` &thumbHeight=`100` &thumbTpl=`GalItemThumb` &imageWidth=`950` &imageHeight=`950`]]
[[+Gallery]]
Далее в переменной шаблона указываю название галереи. Пробовал делать несколько переменных шаблона, но выводятся дубли. Похоже лишь один вызов можно использовать.
Viktorminator
17.01.2012 23:25[[Gallery? &album=`1` &toPlaceholder=`Gallery`]]
[[Gallery? &album=`2` &toPlaceholder=`Gallery`]]
[[+Gallery]]
Павел
02.10.2013 21:16Вызов, который вы привели выводит только вторую галерею. В чем может быть проблема?
Людмила
22.01.2012 00:07Интересный материал, доходчиво изложено! Только у меня при щелчке, вместо увеличения, эта картинка открывается (одна на странице), не могу найти ошибку(
Людмила
23.01.2012 11:24Нашла свою ошибку! При создании чанков в поле Category нужно выбрать Gallery, а не шаблон в котором будет размещена галерея.
Александр
26.01.2012 09:06Я вставил, но результат сильно отличается от ожидаемого. Чувствую, что сам где-то недоглядел, но найти пока не могу. Сайт на тестовом хостинге:
lakrost.u-gu.ru на вкладке Фото.
Viktorminator
26.01.2012 10:24У вас вместо этого файла jquery.lazyload.mini.js внутри пусто. Скопируйте его еще раз...
Александр
26.01.2012 11:26Спасибо! Я в пути до этого файла ошибку сделал. Теперь намного лучше, но от демо еще отличается. А можно анекдот в тему?
"– Подскажите хорошую среду разработки для Java?
– Среда на следующей неделе будет очень хорошей для разработки на Java".
Борис
06.02.2012 11:26Привет автору и всем. Мне нужна в шапке галерея-крутилка-меню, как на Яндексе. Только чтоб при нажатии на картинку переходить на нужную страницу. На каком плагине это можно реализовать?
Viktorminator
06.02.2012 14:44Привет, Борис. Это реализуется не на "плагине", а с помощью jquery. Например, как здесь http://www.1stwebdesigner.com/tutorials/create-stay-on-top-menu-css3-jquery/
Алексей
15.03.2012 13:20Доброго времени, пожскажите как возможно организовать галерею подобную этой:http://www.homedistiller.ru/hd-3.htm. Тут используется Easy 2 Gallery, как я понял она для evo. Нужно организовать вставку в статью небольшую галерею, но могу разобраться как по указанному Вами пути получается не совсем то что нужно.
Viktorminator
15.03.2012 19:58Смотрите в код. 1) Там выводят галерею справа как колонку таблицы td width="140" align="right"
2) В неё вставляете вызов галереи Gallery? &album=...
3) В чанке вывода уменьшенного изображения указываете rel="colorbox", это значит, что при нажатии на ссылку с rel будет выполнятся скрипт и выводится картинка в колорбоксе
4) пропишите пути в хедере для данного скрипта script src="assets/templates/demo/colorbox/colorbox/jquery.colorbox-min.js"
5) вызовите сам скрипт $("a[rel='colorbox']").colorbox();
Если что непонятно, то смотрите этот урок. Скоро сделаю еще один для самых маленьких ;)
Алексей
16.03.2012 11:06За это буду очень благодарен. Как раз надо для самых маленьких :))
Миша
20.03.2012 15:36Здравствуйте подскажите как сделать вложенные категории ( например: общая категория в нее заходишь, а там категория1 категория 2 категория 3 и в каждой из них фотографии)
возможно ли такое?
Viktorminator
20.03.2012 15:53Сложно без картинки понять. Если это то, что я понял, то да, возможно.
Станислав
20.03.2012 18:04Здраствуйте подскажите пожалуйста в чем может быть проблема. Я захожу во вкладку Компоненты, выбираю Gallery, нажимаю создать альбом, далее пишу имя альбома, ставлю галочки Активен и Видимый, нажимаю сохранить, идет процесс сохранения, после его прекращения окошко Создать альбом не пропадает и альбом соответственно не создается
Viktorminator
20.03.2012 19:15Проверьте права на папки. Просмотрите лог ошибок модекса.
Станислав
21.03.2012 19:02Подскажите, где установить права на папки и какие именно. Журнал ошибок никаих записей по поводу моих действий по созданию галерее не прописывает
Артур
23.04.2012 11:28Подскажите как при открытии альбома *content не выводился.
Благодарю.
Eleonora Deniz
21.05.2012 18:03Доброе время суток. Плиийз, помогите разобраться с наполнением фоток в галерею. Недобросовенные айтишники, взяли деньги с меня, "сделали сайт" и кинули(( я теперь не знаю как наполнить((((((((
Я не очень поняла, как наполнять(((
Viktorminator
21.05.2012 20:12Добрый день. Наймите других, более добросовестных.
Дмитрий
23.05.2012 20:53Виктор, вопрос.
При добавлении водяного знака в чанк, в слайдере вылезает абра кадабра. Не подскажете с чем это может быть связано?
Вызов чанка следующий: [[+name]]
Viktorminator
23.05.2012 20:57Квип съел все теги. Через pastebin.com покажите ваш код.
Дмитрий
23.05.2012 22:57В общем вызов чанка такой же как и у вас DemoGalItemThumb, единственное, идет добавка:
a href="[[+image]]&fltr[]=wmt|Текст_водяного_знака|57|T|FFFFFF||100|57|0||0|" rel="colorbox" title="[[+description]]">
img class="[[+imgCls]]" src="[[+thumbnail]]&fltr[]=wmt|Текст_водяного_знака|57|T|FFFFFF||100|57|0||0|" alt="[[+name]]"
Настя
18.06.2012 22:36Здравствуйте. Обращаюсь с очередной нестандартной проблемой(мне на них везет). Когда загружаю картинки в альбом (пробовала через "загрузить элемент" и "мульти-аплоад"), пишет результат загрузки-"неудача", выделяет красным, но добавляет файл как разбитый(просто значок файлика без картинки). в чем может быть проблема?) На сайте при нажатии на этот разбитый файлик выводятся ошибки. одна из них: Strict Standards: Non-static method phpthumb_functions::GetAllFilesInSubfolders() should not be called statically, assuming $this from incompatible context in.. .
Viktorminator
18.06.2012 22:39Посмотрите лог ошибок. Попробуйте поменять права на папку, в которую пытаетесь загрузить файл.
Эдуард Сещенко
25.06.2012 20:09Добрый вечер! Все выставил один в один, а выводится миниатюры в ряд по вертикали и открываются большие по одной и в левой стороне. Не понятно, что то со стилями...? Подскажите где смотреть..
Заранее благодарен.
Антон
27.07.2012 12:27Я никак не пойму как вывод в горизонтально забацать. Что бы я не делал выводит вертикально. Если заключаю в блок, отстраиваю CSS, а она 1 фиг сама по себе вертикально. Я что то отчаялся уже.
Viktor Minator
27.07.2012 13:14float: left;
Алексей
10.08.2012 00:37Доброго времени суток, а как сделать вывод названия конкретного альбома при просмотре оного?
Сергей Беляков
16.08.2012 16:21Добрый день!
Если я правильно понял, то для каждого ресурса нужно создавать отдельную галерею?
У меня следующая ситуация: есть много ресурсов, например интернет-магазин или что-то в этом роде, на странице описания товара должно быть несколько фото, но дело в том, что товаров очень много и на каждое описание идет по 1-10 картинок, создавать для каждого товара галерею получается довольно муторно. Было бы проще, если бы можно было загружать произвольное количество картинок в дополнительный параметрах, что-то вроде param-edit в shopkeeper'е, в котором просто добавляется еще одно поле при необходимости. Можно это реализовать с помощью Gallery или может быть что-то еще посоветуете?
Саша Исаев
17.12.2012 07:34Тоже крайне интересно возможное решение, внешне оформить можно с помощью slidejs: http://slidesjs.com/examples/product/, но вот как правильно настроить TV параметры в MODx Revolution. Подскажите, пожалуйста.
Misha
08.09.2012 19:47Подскажите как реализовать постраничную навигацию? Пытаюсь через getPage не выходит... так понял в сниппет не передается значение total (количество элементов в альбоме).. если нет никакого готового решения подскажите как достать это значение... плиз.)
Viktor Minator
10.09.2012 15:06http://forums.modx.com/thread/?thread=37769&page=2
Тихон
11.09.2012 15:23Вопрос такой: как сделать при помощи этого или другого дополнения возможность увеличения фотографии расположенной в тексте, чтобы она всплывала в увеличенном виде в лайтбоксе. ну а дальше закрыл и опять текст смотришь. Это дополнение у меня не получается настроить так.
Viktor Minator
12.09.2012 11:15Берёте любой лайтбокс, например этот http://lokeshdhakar.com/projects/lightbox2/ внимательно читаете инструкцию использования и делаете.
Konstantin Baranov
13.10.2012 22:30demo чтото не работает (
Андрей Лютый
17.10.2012 15:00Подскажите, а как сделать ватермарку из изображения? чтобы он на картинку накладывал?
Viktor Minator
17.10.2012 16:36http://www.belafontecode.com/image-manipulation-with-phpthumbof-in-modx-revolution/ последние 2 пункта
Николай Хохлунов
19.10.2012 14:57скажите пожалуйста как а организовать 3 уровня, то есть альбом-альбом-картинка.
Борис Чеботков
13.03.2013 09:01Тоже хотелось бы узнать про вывод альбом-альбом-картинка
Борис Чеботков
13.03.2013 09:05Мне необходимо выводить галерею в виде папок 2012, 2013. В каждой папке должны быть свои галереи. привязка к дате создания не актуальна, т.к. галерея может наполняться в любое время (год). что-то типо:
2012:
- новый год (id1)
- 23 февраля (id2)
2013:
- новый год (id3)
- 23 февраля (id4)
володя володин
04.04.2013 19:42ссылка на демо не пашет.
и подскажите еще возможно ли реализация следующей галереи:
фотки кучей закидываю в папку , все что в ней есть автоматом выводиться в галерею...возможно не папка а яндекс диск например?
Viktor Minator
04.04.2013 19:59можно. вот здесь я так сделал http://spinaltraumalife.com/activniy-otdih
володя володин
04.04.2013 20:28просто еще не использовал галерею...как то не успел. вот и назрели вопросы)
а если планируется много альбомов, для начала 20, а в каждом фоток от 30 до 50....
что посоветуете? в плане быстроты особо интересует... Спасибо!
Николай
14.04.2013 14:47Добрый день! Мне необходимо вывести несколько галерей на одной странице. Но ничего не получается, выводятся либо дубли либо пустая страница.
Вывожу так
16.04.2013 22:40Добрый день.
Пытаюсь реализовать галерею полностью по Вашему примеру.
Подскажите ка реализовать более человечье расположение объектов в галерее чем как получилось.
Например построчное расположение по 3-4 снимка
http://yadi.sk/d/WTpQUkqI46dY0
Василий Столейков
24.04.2013 12:52Я использую стандартный плагин к галерее slimbox, никто не знает, почему там не срабатывают свойства &imageWidth и &imageHeight ?
Василий Столейков
24.04.2013 12:54Грузится полностью всё изображение и вылезает за экран.. Как его уменьшить?
Viktor Minator
25.08.2013 11:26colorbox
Витя
02.05.2013 16:19Все работает хорошо до того момента как за развертывание картинки берется colorbox, дело в том что у полноразмерной картинки нету атрибута alt, а для продвигаемого сайта это важно. Как указать колорбоксу откуда брать этот атрибут?
Игорь Шубин
07.06.2013 16:06а где код чанка DemoGalItemThumb ???
Anna
25.08.2013 07:09Здравствуйте! Подскажите пожалуйста можно ли сделать так, чтобы при клике на альбом сразу появлялся слайдер с входящими в него фотографиями?? Очень нужно, чтобы не было перехода на внутреннюю страницу альбома.
Viktor Minator
25.08.2013 11:25AJAX
Anna
25.08.2013 15:24Т.к. у нас есть Colorbox то шаблон для слайдера отдельно создавать не нужно, я правильно понимаю?
А как получить id того альбома, слайдер которого будет выводиться? только через php? я с ним совсем не дружу :/
Нет ли какого нибудь примера?
Viktor Minator
25.08.2013 17:18Итак допустим у вас выводятся альбомы, для них создаёте ссылки вида a href="?album="
То есть при нажатии у вас должен срабатывать запрос на страницу и она должна вам отдавать содержимое альбома, то бишь фотографии,
вы их принимаете и выдаёте в виде галереи. Попробуйте пройти пару уроков здесь с аджаксом и всё станет понятно.
Павел
02.10.2013 20:55Виктор, большое спасибо за статью! Все получилось. А не подскажите, как сделать, чтоб картинки из альбома сразу выводились?
И второй вопрос - как вложить это все в TV? Я создал тв galery_name (Input options- text, output - galleryitem). Галерея не выводится, в сгененированном html коде на месте галлереи пусто. Уже второй день бьюсь, не могу понять, где копать.
Viktor Minator
02.10.2013 21:35Делайте так:
0) проверьте есть ли у вас в вызове &includeTVs=`1`
1) посмотрите что у вас в базе записалось в эту ТВ
2) попробуйте записать нужное значение для вывода в getResources
3) ... другие действия
Павел Никонов
14.10.2013 17:10Виктор, спасибо. С TV разобрался - в Input надо было поставить galleryalbumlist и все заработало.
У меня еще вопрос: а можно как нибудь выудить теги ко всем изображениям к картинкам в галереи и вывести их списком? Я хочу сделать галерею, чтоб из сайдбара во фронтенде можно было нажать по тегу и на странице бы выводились картинки которые соответствую этому тегу. Идеально было бы сделать мультиселект (чтоб можно было выводить по нескольким выбранным тегам). Подскажите, как это можно реализовать.
Віктор Матушевський
14.10.2013 19:11нужно делать xPDO запрос к таблице, где содержаться данные теги и выводить их список, потом делать фильтр (селект) и вывод исходя из тега (ещё один xPDO запрос).
Віктор Матушевський
14.10.2013 19:13тест
Павел Никонов
15.10.2013 13:51Спасибо. Готовых решений, как я понимаю, в природе нет?
Я нашел сниппет gallerytag на гитхабе (https://github.com/samargulies/galleria-galleria), но он не ставится в систему. Вы работали с ним? Что можете сказать?
Павел Никонов
15.10.2013 19:41извините за кривую ссылку, писал с телефона и не то копирнул. Вот правильная: https://github.com/dshoreman/modx-gallerytag
Viktor Matushevskyi
15.10.2013 19:53Да, это дополнение как раз и содержит сниппет с xPDO запросом и выводит теги. Осталось сделать (или найти) фильтр изображений по тегу.
Сергей Бакей
29.11.2013 16:06Подскажите есть ли возможность использовать разные шаблоны для вывода всех альбомов и для вывода изображений отдельного альбома? Вариант вывода в 1 шаблоне немного не устраивает
Viktor Matushevskyi
29.11.2013 20:14Да. Я здесь так сделал spinaltraumalife.com
Алексей Измайлов
18.02.2014 14:38Блин как сделать URL картинок типа: http:://site/images/album/picture.img
У меня ссылки типа - /assets/components/gallery/connector.php?action=web/phpthumb&ctx=web&w=750&h=800&zc=0&far=&q=90&src=%2Fassets%2Fgallery%2F1%2F2.jpg
Валентин
26.03.2014 16:41Огромное спасибо за Ваш сайт,очень мне помогает делать первые шаги по необъятным просторам ModX. Сейчас занимаюсь галлереей, и есть такая проблема: генерируются миниатюры, но почему-то изображения в них не масштабируются пропорционально, а вырезается та или иная часть изображения и ставится в качестве миниатюры. В чанке для вывода миниатюры прописываю:
/ Читал мануалу от разработчика по phpThumb, что на http://phpthumb.sourceforge.net , все равно не догоняю, гдя я и что не так делаю. Пробовал и &zc убирать и разные значения far ставить....
Вызов в шаблоне галлереи выглядит так:
`
&thumbTpl=`GalItemThumb_custom`
&containerTpl=`GalleryAlbumTpl_custom`
&thumbFar=`1`
&thumbZoomCrop=`0`
&imageWidth=`800px`
В чем может быть проблема?
Валентин
26.03.2014 16:43Не вставилось: в чанке для изображения прописываю: src="&w=100&h=110&zc=0&far=1&q=90&bg=FFFFFF"
Олег Ёлгин
03.04.2014 14:25Спасибо за статью, все просто и понятно!)
У меня следующий вопрос - как вывести список альбомов по фильтру? Как я понял, у самого альбома нет поля tag, но зато есть поле year.
Как тогда сделать выборку по году? Например вывести альбомы за 2013й год(альбомы, не фотографии). Или может есть какой-то способ попроще?
Олег Ёлгин
03.04.2014 14:472 дня мучался, написал коммент и через 15 минут придумал решение)))
Использовал древовидную структуру галереи и параметр &parent=`id`
Все работает)
Андрей88
25.09.2014 15:29Здравствуйте! У меня проблема, что не пробовал все равно при клике на фото открывается не с помощью плагина, а как отдельная страница и не в окне.
Андрей88
25.09.2014 15:31Вот пример http://polycar.com.ua/123.html?galAlbum=7
Viktor Matushevskyi
25.09.2014 16:39Вот этот скрипт не подключён http://polycar.com.ua/assets/templates/demo/colorbox/colorbox/jquery.colorbox-min.js
Андрей88
25.09.2014 17:00Заработало, а что прописывать, чтобы выводились фото в превью только одного альбома, как делать вызов?
derzaiii
06.11.2014 13:59Спасибо за гайд - все получилось, правда colorbox не понравился, переделал на fancybox. Подскажите можно ли изменить ссылку на изображение - поисковики индексируют ужасный путь - мойсайт.ком/assets/components/gallery/connector.php?action=web/phpthumb&ctx=web&w=800&h=800&zc=0&far=&q=90&src=%2Fassets%2Fgallery%2F2%2F18.JPG
хотелось бы сократить его до читаемого без указания коннектора