Рейтинг:0

Add class to field parent with a preprocess hook in a custom module?

флаг cn

Background:

I would like to alter the classes that are added to a rendered field in Drupal 9 in a custom module. I'm trying to use hook_preprocess_field and I'm not sure if this will work or if there is a better alternative.

based on: https://www.drupal.org/forum/support/module-development-and-code-questions/2017-03-31/add-class-to-field-in-drupal-8

I have the following:

function my_module_preprocess_field__field_pricing_grid_items(&$vars)
{
  
  foreach(array_keys($vars['items']) as $delta)
  {
    $vars['items'][$delta]['attributes']->setAttribute('class', 'my-class');
  }
}

This works for adding a class but I can't figure out how to add a class to the parent div. enter image description here

Result

 <div class ="field__items">
         <div class ="field__item CUSTOM-CLASS"></div>
      </div>

Desired result:

 <div class ="field__items CUSTOM-CLASS">
     <div class ="field__item></div>
  </div>

Questions:

  1. How can I add a class to the parent div? Is that possible with this hook?
  2. Would an alternative approach of maybe overriding the field with a template in my module work? The theme template would be field--field-pricing-grid-items.html.twig Is there a way to override the theme with a module?
  3. If neither of these approaches make sense what would be a possible way of achieving this.
Рейтинг:0
флаг cn

Я шел с неправильным подходом.

Что сработало:

мне нужно было использовать крючок_тема в моем /мой_модуль/мой_модуль.модуль файл

функция MY_MODULE_theme ($ существующая, $ тип, $ тема, $ путь) {
  возвращаться [
    'field__field_pricing_grid_items' => [
      'базовый крючок' => 'поле',
      'путь' => $путь. '/шаблоны/поле',
    ],
  ];
}

тогда было легко переопределить поле.html.twig с /my_module/templates/field/field--field-pricing-grid-items.html.twig

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

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