Несколько блоков в одном блоке

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

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

На странице есть несколько блоков вьюх (каждый под свой тип материала), которые разворачиваются с помощью модуля collapsiblock . Сами вьюхи - это карусельки слайдеры. Хочу эти блоки собрать в единый блок со своим одним заголовком. Как возможно реализовать?

Постараюсь объяснить задачу. На странице должно быть несколько каруселей изображений (например, использую swiper formatter + photoswipe), которые разворачиваются или сворачиваются по клику на заголовок (использую collapsiblock). Нажимаешь на "Кошки" - развернулся слайдер с кошками, нажал на "Собаки" - развернулся слайдер с фотками собак.
Сделал типы материала (кошки, собаки, хомяки...) с полем изображения. По каждому типу материала создал по блоку views (с выводом через swiper formatter + photoswipe). Теперь стоит задача как всё это дело завернуть под общий заголовок "Домашние животные".
Как по уму посоветуете это замутить. И насколько будет правильным решение запихать все эти блоки в один блок (как писал выше)? Насколько помню для семёрки был модуль, который умел выводить ноды как блоки.

Комментарии

Аватар пользователя Selpi Selpi 18 января 2023 в 13:39

Вьюзы поддерживают аттачменты, т.е. к одной вьюшке можно прицепить еще сколько нужно. Таким образом можно вывести одну вьюшку с многочисленными аттачментами в одном блоке. Дальше уже с помощью css и js все приводится к нужному виду.

Также вьюзы поддерживают контент во вкладках, возможно такое тоже будет полезно.

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

Аватар пользователя gun_dose gun_dose 18 января 2023 в 22:56
2

Можно кстати через Layout builder. Включаешь модуль block_content, если он не включен. Создаёшь тип блока, удаляешь из него все поля. В настройках отображения ставишь галочку использовать Layout builder, и вторую галочку, что у каждого блока может быть свой лэйаут. Ну и всё. Далее создаёшь блок, переходишь на вкладку layout и добавляешь блоки в блок.

И при этом не нужно ни одной строчки кода и ни одного контрибного модуля.

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

получилось, но так же как и с модулем block group у этих модулей в layout не работает collapsiblock.
А цель стояла такая, чтобы эти блоки умели разворачиваться по клику

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

Такие вещи проще сделать парой строчкой js кода в теме оформления. И проще будет и работать будет везде где надо.

Аватар пользователя VasyOK VasyOK 19 января 2023 в 6:08

Как по уму - не знаю. Layout builder или Paragraphs или Panels или еще что позабористее. Если вам удобно, значит это по уму - пользуйтесь.

Несколько блоков объединить - blockgroup. Конфликтует с фасетами - отказался от него.

"Насколько помню для семёрки был модуль, который умел выводить ноды как блоки" - block_node

Аватар пользователя VasyOK VasyOK 19 января 2023 в 18:56

Коллапсы стоит ручками научится делать.
https://www.rapiddg.com/article/how-build-accessible-accordion-drupal - я правда не понимаю о чем там.

https://www.youtube.com/watch?v=8YhfAq57qdE&t=18s - тут для 7ки, но принцип тот же. Хотя синтаксис чучуть другой.