Как вы организуете галереи фотографий?

Главные вкладки

Аватар пользователя xSPiRiTx xSPiRiTx 28 декабря 2022 в 12:05

Есть ноды с полем фото. В это поле загружено больше 100 фотографий. Если сделать сетку views + colorbox, то получается огроменная страница. Проблема решается пагинатором. Но тогда colorbox не видит все фото. Видит только те, что на конкретной странице пагинатора. Надеюсь понятно излагаю мысли. Получается вариант с сеткой отпадает.
Можно выкрутиться модулем Responsive Gallery Formatter, но придётся долго прокручивать список, чтобы найти какую-то конкретную фотку, которую надо показать. Сеткой из превьюх это было бы удобнее и быстрее.
А как вы организуете большие фотогалереи на сайтах? Поделитесь мыслями и опытом.

Комментарии

Аватар пользователя ivnish ivnish 28 декабря 2022 в 12:59

А проблема в чем? Как не показывать все фото на странице, но при этом чтобы colorbox видел и пролистывал все фото? Я думаю это невозможно

Аватар пользователя marassa marassa 28 декабря 2022 в 13:06
3

xSPiRiTx wrote: Есть ноды с полем фото. В это поле загружено больше 100 фотографий

Это вообще-то порно. Каждое фото должно быть отдельной сущностью, в идеале media, и через ER привязываться к одному или более релевантным материалам.
Colorbox это вообще некропорно образца 2009 года без поддержки тача и т.п.
Лично я использую связку Views Photo Grid + Views Infinite Scroll + PhotoSwipe. Первый пришлось немного доработать напильником для поддержки Drupal 9, третий для автоматического запуска Infinite Scroll при приближении к концу текущей страницы.
Пример.

Аватар пользователя ivnish ivnish 28 декабря 2022 в 13:18

Интересная задумка. Попробую взять на вооружение для своего модуля media_gallery. С первыми двумя пунктами мне всё понятно. Можешь рассказать/показать как ты допилил photoswipe?

Аватар пользователя marassa marassa 28 декабря 2022 в 13:27
2

Собственно вот весь код, который пришлось добавить в photoswipe.jquery.js для реализации основной функциональности:

      this.gallery.listen('beforeChange', function() {
        if(this.getCurrentIndex() >= this.items.length - 3) {
          $('[data-drupal-views-infinite-scroll-pager="automatic"]', galleryElement).find('[rel=next]').click();
        }
      });

Я сначала хотел предложить патч на орг, но по-хорошему надо делать красиво с настройками, проверками и тестами, а до этого у меня руки так и не дошли. Да и не уверен я был, что это кому-нибудь нужно кроме меня - вроде никто не спрашивал нигде никогда.

Аватар пользователя marassa marassa 28 декабря 2022 в 13:08

ivnish wrote: Я думаю это невозможно

В фотосвайпе я это сделал. Уверен, что и колорбокс можно доработать, просто брезгую в этом окаменевшем говне мамонта ковыряться)

Аватар пользователя xSPiRiTx xSPiRiTx 28 декабря 2022 в 14:28

marassa, та хрен с ним, с колорбоксом. Пусть будет photoswipe. Не важно.
Если с вашим кодом получится пропатчить photoswipe для работы с views infinite scroll, то это прям то, что нужнО!

Аватар пользователя marassa marassa 28 декабря 2022 в 15:37

Могу скинуть в личку полностью photoswipe.jquery.js. У меня довольно старая версия photoswipe, так что всё равно придётся разбираться по месту.

Аватар пользователя xSPiRiTx xSPiRiTx 28 декабря 2022 в 16:33

буду признателен!
а какую версию библиотеки photoswipe вы используете? В таком случае тоже поставлю себе в libraries такую же версию

Аватар пользователя marassa marassa 28 декабря 2022 в 16:48
1

Нет, там совсем немного. Модуль для восьмерки есть, просто drupal.org его не показывает ибо нефиг Wink
Почту в личку киньте, я пришлю оба модуля.

Аватар пользователя xSPiRiTx xSPiRiTx 28 декабря 2022 в 16:42

Пользуясь случаем спрошу про модуль Photoswipe. Создал вьюху, которая выводит тока поля изображения из ноды. Требуется, чтобы photoswipe во вьюхе мог крутить несколько фото, а не увеличивал только одно. В нодах в Управлении отображением это настраивается.
С views не так просто. В настройках Views в поле выбираю Форматер - Photoswipe. Далее Настройки стиля - Настроить обёрточный HTML поля и метки. HTML тег обёртки оставляем по умолчанию. Ставим флажок Add HTML Class и вбиваем туда photoswipe-gallery. Не получается.
Всё по этой инструкции в графе USAGE пункт 2:
https://github.com/segovia94/Drupal-Photoswipe
Там написано предупреждение, что не рекомендуется ставить класс photoswipe-gallery в настройках вьюхи Расширенные - CSS класс. Ради эксперимента указал и "Multiple images in Views" заработали. Теперь не знаю, оставить так и забить на предупреждение, что могут быть косяки с ajax пагинаторами. У меня Infinite Scroll как раз стоит.

Аватар пользователя marassa marassa 28 декабря 2022 в 16:51
1

xSPiRiTx wrote: Там написано предупреждение, что не рекомендуется ставить класс photoswipe-gallery в настройках вьюхи Расширенные - CSS класс

А я там не читал, и поставил класс именно в расширенных настройках вьюхи, и всё у меня работает, причем именно с Infinite Scroll Wink

Аватар пользователя xSPiRiTx xSPiRiTx 16 января 2023 в 9:18

как-то давненько интересовался созданием такой фотогалереи, чтобы можно было каждое фото по отдельности комментировать и ставить оценки. Решения так и не нашел. Это получается нужно одно фото = одна нода. То есть массово загрузить одной пачкой фотки не получится.

Аватар пользователя marassa marassa 16 января 2023 в 9:38
1

У меня как раз одно фото = одна нода, но очень хотелось иметь возможность загружать фотографии пачками. Сделал так: https://drupal.ru/node/143042 .
На на сегодняшний день я бы очень внимательно посмотрел на модуль Media. Возможно, свежие модули для пакетной загрузки фото умеют загружать в поля типа Media, а объекты Media - это по сути сущности, к которым можно добавлять свои поля и т.п.
Сам глубоко не вникал, так как у меня уже все сделано через ж и работает, но для нового проекта сто́ит посмотреть в ту сторону.

Аватар пользователя ivnish ivnish 16 января 2023 в 9:39
1

marassa wrote: озможно, свежие модули для пакетной загрузки фото умеют загружать в поля типа Media

Давно уже