Cela peut être fait de plusieurs manières, vous pouvez tout faire dans le modèle de nœud avec Twig ou vous pouvez créer une fonction de prétraitement et créer une variable à utiliser dans le modèle de nœud. La clé pour apprendre ce qui est dans le tableau est d'utiliser Devel Kint. Sans cela, vous ne saurez pas ce qu'il y a dans le tableau.
Installez d'abord Kint qui est fourni avec le module Devel pour Drupal 8. Ensuite, choisissez votre modèle de nœud (mais cela peut être fait dans n'importe quel type de modèle) et examinez la variable de contenu comme cela (idéalement au bas du modèle).
{{ kint (content) }}
De cela, nous obtenons des informations de débogage imprimées sur la page et si vous développez le tableau, vous verrez toute une série d'informations. Tout de suite, je vois ma valeur d'arrière-plan et je peux construire un chemin pour l'imprimer comme
{{ content.field_background[0]['#markup'] }}
Vous pouvez maintenant l'imprimer en tant que style ou classe d'arrière-plan dans un div
<div style="background-color: {{ '#' }}{{ content.field_background[0]['#markup'] }};" class="color-{{ content.field_background[0]['#markup'] }}">
<h2>Hello</h2>
</div>
J'ai testé cela et cela fonctionne très bien, le div a rendu la couleur d'arrière-plan que j'avais sélectionnée dans ma liste de champs lors de la modification du nœud.
Maintenant, ce n'est pas idéal, donc nous voulons probablement créer une variable pour cela dans un preprocess_node dans le fichier .theme de notre thème.
function MYTHEME_preprocess_node(&$vars) {
$vars['bgcolor'] = '#' . $vars['content']['field_background'][0]['#markup'];
}
Maintenant que j'ai créé un var, il est beaucoup plus propre d'imprimer ceci:
<div style="background-color: {{ bgcolor }};" >
<h2>Hello</h2>
</div>
Une note pour ci-dessus, vous devriez probablement envelopper cela avec une instruction if pour vérifier si elle est vide ou non.
Cela fonctionnerait ou structurerait l'instruction if là où vous l'aimez
{% if bgcolor %}
<div style="background-color: {{ bgcolor }};" >
<h2>Hello</h2>
</div>
{% endif %}
{% set classes = [ ...
-à- dire puis en imprimant les classes en tant que<article{{ attributes.addClass(classes) }}>
ou vous pouvez également faire quelque chose comme ça<div{{ content_attributes.addClass('foobar' | clean_class) }}>
. Comme le dit la note ci-dessus, je pense que nous avons besoin de plus d'informations. Si vous voulez une valeur de champ en tant que classe, il serait utile d'utiliser également le débogage Kint et Twig et vous devrez peut-être définir un var avec une fonction de prétraitement, mais ce n'est peut-être pas nécessaire.