1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

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

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

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

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.

Лучший ответ

Комментарии

Аватар пользователя 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?
Заранее благодврю!

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /