Это может быть сделано несколькими способами, вы можете сделать все это в шаблоне узла с помощью Twig или вы можете создать функцию предварительной обработки и создать переменную для использования в шаблоне узла. Ключом к изучению того, что находится в массиве, является использование Devel Kint. Без этого вы не узнаете, что находится в массиве.
Сначала установите Kint, который поставляется с модулем Devel для Drupal 8. Затем выберите шаблон вашего узла (но это можно сделать в любом типе шаблона) и изучите переменную содержимого следующим образом (в идеале внизу шаблона).
{{ kint (content) }}
Отсюда мы получаем отладочную информацию, напечатанную на странице, и если вы развернете массив, вы увидите целую кучу информации. Сразу же я вижу свое фоновое значение и могу построить путь для его распечатки как
{{ content.field_background[0]['#markup'] }}
Теперь вы можете напечатать это как фоновый стиль или класс в div
<div style="background-color: {{ '#' }}{{ content.field_background[0]['#markup'] }};" class="color-{{ content.field_background[0]['#markup'] }}">
<h2>Hello</h2>
</div>
Я проверил это, и он отлично работает, div отображает цвет фона, который я выбрал в списке полей при редактировании узла.
Теперь это не идеально, поэтому мы, вероятно, хотим создать переменную для этого в preprocess_node в файле .theme нашей темы.
function MYTHEME_preprocess_node(&$vars) {
$vars['bgcolor'] = '#' . $vars['content']['field_background'][0]['#markup'];
}
Теперь, когда у меня есть созданная переменная, гораздо удобнее ее распечатать:
<div style="background-color: {{ bgcolor }};" >
<h2>Hello</h2>
</div>
Одно замечание выше, вы, вероятно, должны заключить это в выражение if, чтобы проверить, пусто оно или нет.
Это будет работать или структурировать оператор if там, где вам это нравится
{% if bgcolor %}
<div style="background-color: {{ bgcolor }};" >
<h2>Hello</h2>
</div>
{% endif %}
{% set classes = [ ...
затем распечатать классы как,<article{{ attributes.addClass(classes) }}>
либо вы можете сделать что-то подобное<div{{ content_attributes.addClass('foobar' | clean_class) }}>
. Как сказано в примечании выше, я думаю, что нам нужно больше информации. Если вы хотите получить значение поля в качестве класса, это также поможет использовать отладку Kint и Twig, и вам может потребоваться установить переменную с функцией предварительной обработки, но, возможно, в этом нет необходимости.