Рейтинг:1

Как добавить класс в несколько блоков просмотра с помощью ветки?

флаг br

У меня есть четыре блока для просмотра. Я хочу добавить класс «fancy-body» ко всем четырем блокам. Как я могу добавить это.

view_id : категории

display_id блоков: блок_1, блок_2, блок_3, блок_4

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

блок--представления-блок--категории-блок-1.html.twig
блок--представления-блок--категории-блок-2.html.twig
блок--представления-блок--категории-блок-3.html.twig
блок--представления-блок--категории-блок-4.html.twig

Можно ли добиться в одном файле шаблона ветки? Как я могу этого добиться?

Нужна помощь, спасибо!

Akshay avatar
флаг us
Что, если вы добавите класс во все отображения блоков в представлении вручную в разделе «Дополнительно»? Собираетесь ли вы создать ветку просто для добавления классов?
Steve Siddu avatar
флаг br
Я хочу манипулировать структурой всех блоков определенного представления.
Akshay avatar
флаг us
Хорошо. Затем вам нужно будет создать файл ветки, чтобы изменить структуру HTML. Пожалуйста, измените свой вопрос, так как он указывает только на добавление класса.
Рейтинг:3
флаг cn

Если вам нужны только классы, модулей, упомянутых в ответе Джозефа, должно быть достаточно.

Если вам нужно внести дополнительные изменения и вам определенно нужен собственный файл шаблона, вы можете реализовать hook_theme_suggestions_HOOK().

Что-то вроде:

function module_theme_suggestions_block (массив переменных $) {
  $ предложения = [];

  if ($variables['elements']['#base_plugin_id'] == 'views_block') {
    if (preg_match('/views_block:categories-block_[0-9]+/', $variables['elements']['#plugin_id'])) {
      $suggestions[] = 'block__views_block__categories_all_blocks';
    }
  }

  вернуть $suggestions;
}

В приведенном выше примере ваш единственный файл шаблона будет называться block--views-block--categories-all-blocks.html.twig.

Steve Siddu avatar
флаг br
какое должно быть имя функции, если имя модуля "XYZ", верно ли "XYZ_theme_suggestions_block()"?
флаг cn
Да это правильно
Steve Siddu avatar
флаг br
классы и идентификаторы, добавленные в `block--views-block--categories-all-blocks.html.twig`, отражаются на сайте drupal. можете ли вы сказать мне, где именно, в каком файле или в какой папке мне нужно добавить этот код. Я добавил этот файл в файл `XYZ.module`. спасибо!
Steve Siddu avatar
флаг br
Все должно быть так же или нужно менять? например, что такое `#base_plugin_id` и `#plugin_id`
флаг cn
Вам не нужно ничего менять, он соответствует идентификатору представления и идентификатору отображения из файлов шаблонов в вопросе.
Рейтинг:2
флаг in

Есть несколько модулей, которые позволяют добавлять классы в блоки через администратора, в зависимости от того, где вы добавляете блоки:

Модуль атрибутов компонента Layout Builder позволяет редакторам добавлять Атрибуты HTML для компонентов (блоков) Layout Builder. Атрибуты могут быть добавлено к 1) элементу блока (внешнему), 2) заголовку блока и 3) элемент содержимого блока (внутренний).

Классы блокировки позволяют пользователям добавлять классы для блокировки заголовка, контента и оболочка любого блока через интерфейс конфигурации блока. Этот Модуль расширяет возможности модуля Block Class.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.