Как заставить все блоки в регионе использовать один и тот же шаблон

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

Аватар пользователя Gnome.su Gnome.su 14 декабря 2018 в 15:38

Здравствуйте!
Подскажите как заставить все блоки в регионе использовать один и тот же шаблон.
В сети нашёл только этот хук:

function mytheme_theme_suggestions_block_alter(array &$suggestions, array $variables) {
  $block = Block::load($variables['elements']['#id']);
  $region = $block->getRegion();
  $suggestions[] = 'block__'.$region.'__block';
}

но он у меня не работает

The website encountered an unexpected error. Please try again later.

Лучший ответ

Аватар пользователя VasyOK VasyOK 14 декабря 2018 в 23:03
1

А что нельзя добавить theme sugestion для всех блоков региона? Theme debug знаете как включить?

Комментарии

Аватар пользователя Gnome.su Gnome.su 15 декабря 2018 в 3:07

А что нельзя добавить theme sugestion для всех блоков региона?

Можно по подробнее как это сделать и как использовать?

Theme debug знаете как включить?

Нет, но я погуглю)

Аватар пользователя Gnome.su Gnome.su 15 декабря 2018 в 11:30

Сработало!

function exoopport_theme_suggestions_block_alter(array &$suggestions, array $variables) {
  $block = entity_load('block', $variables['elements']['#id']);
        $region = $block->getRegion();
  $suggestions[] = 'block__'.$region.'__block';
}
Аватар пользователя Gnome.su Gnome.su 16 декабря 2018 в 4:29

Я не то имел ввиду. Просто файл шаблона для блока в папку темы закинуть.

Я так и сделал, но проблема заключается в том что шаблон блоков у меня индивидуальный, в нём прописано множество css классов и при загрузке страницы основной контент сайта так же заворачивается в блок, что не есть хорошо.
Редактировать шаблон каждого блока очень муторно, к тому же зачем? если можно использовать вышеприведённый хук.

Аватар пользователя Orion76 Orion76 16 декабря 2018 в 8:40

Индивидуальный шаблон нужен , в основном, для индивидуальной html-разметки (конкретно индивидуальной структуры html-тегов).
Если у Вас шаблоны блоков отличаются только css-классами, то скорее всего у Вас просто "css-классификация" не оптимальна или Вы не до конца понимаете возможности css-селекторов.
Тогда нужно просто перечитать какое-нибудь руководство по css.

Если всетаки классы блоков зависят от каких-то динамических параметров, т.е. изменяются в зависимости от какого-то контекста конкретной страницы и т.п. то тут лучшее решение- препроцесс-хук
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21...

Аватар пользователя Gnome.su Gnome.su 25 января 2021 в 10:28

Gnome.su wrote:
Сработало!

function exoopport_theme_suggestions_block_alter(array &$suggestions, array $variables) {
  $block = entity_load('block', $variables['elements']['#id']);
        $region = $block->getRegion();
  $suggestions[] = 'block__'.$region.'__block';
}

Под Drupal 9 не работает(
Есть варианты как заставить данную конструкцию работать в Drupal 9?
Заранее благодврю!