toutattachesansaccent.com

Utiliser les taxonomies Drupal

Posté le Lundi 7 août 2023 à 18h03
Un papillon sur une fleur

Au delà d'une utilisation en tant que tags (comme en bas de cet articles) les taxonomies peuvent aussi servir à distinguer des types de contenus et à en modifier éventuellement le style.

Sur ce site en plus de la taxonomie de base "Etiquettes" dont je me sers pour mettre des hashtags en bas de pages j'ai créé la taxonomie "Catégorie d'articles" qui permet de les classer en fonction de mes différentes activités (écriture, dev, photos ...) et de leur attribuer une couleur spécifique.

Pour commencer j'ai ajouté le champ "field_couleur' à cette taxonomie (pour faire bien j'aurais dû l'appeler field_color mais quand je bosse sur mes propres sites je fais des entorses aux anglissimes)

Puis j'ai ajouté un champ field_categorie référence à cette taxonomie dans mon type de contenu article

Puis je surcharge le hook_preprocess_node de mon thème custom (tasa) dans le fichier tasa.theme afin d'aller chercher dans ma catégorie les champs que je vais utiliser à l'affichage :

use Drupal\node\Entity\Node;
use Drupal\node\NodeInterface;
use Drupal\taxonomy\Entity\Term; 
function tasa_preprocess_node(&$vars) {
    $node = $vars['node'];
    switch ($node->getType()) {
        case "article":
            // Affichage catégorie
            $vars['nomcat'] = '';
            if($node->get('field_categorie')->getValue()[0]['target_id'] > 0){
                $idCat = $node->get('field_categorie')->getValue()[0]['target_id'];
                $cat = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($idCat);
                $vars['nomcat'] = $cat->getName();
                $vars['descat'] = ['#markup' => $cat->getDescription()];
                $coulcat = $cat->get('field_couleur')->getValue()[0]['value'];
                $vars['coulcat'] = $coulcat=='' ? 'darkorange' : $coulcat;
            }
       break;
    }
}

Puis j'implémente ces variables dans le twig de mon template articles : node--article.html.twig

{% if nomcat != ''  %}
     <div class="descat" style="background-color:{{coulcat}}">
          <div class="nomcat">
               {{nomcat}}
          </div>
          {{descat}}
     </div>
 {% endif %}

Voila, c'est pas grand chose mais la prochaine fois que je voudrais travailler sur mes taxos je viendrais ici plutôt que de chercher sur Google ou d'ouvrir un par un les fichiers .theme de mes différents site 😁

Drupal
Développement
PHP
Développement

Je vais poster ici quelques codes ou astuces utilisées lors de la création de mes sites.

Conçu plus comme un pense bête personnel qu'autre chose mais si ça peut vous servir aussi tant mieux.

Auteur multimédia développant pour le web depuis plus de 20 ans et sur Drupal depuis 8 ans je suis également auteur de textes pour le théâtre ou la vidéo.

Je poste sur ce site autant mes astuces de développeur quand j'en ai (ou les solutions que j'ai mis un moment à trouver et que je veux absolument noter quelque part 😊 ).

Je profite aussi de cet espace qui m'appartient pour partager avec ceux qui le souhaitent mes autres créations (photos ? dessins ?) voire mes voyages ou autres loisir.

Développer ce site me permet non seulement d'avoir un espace de création pour mes tests de modules ou fonctions web mais aussi de partager mes "œuvres" sur une plateforme qui m'en garanti les droits contrairement aux réseaux sociaux et leurs conditions générales que nous ne lisons jamais mais dont nous savons tout de même qu'elle nous sont rarement favorables* 😉

* Oui, je sais, cette phrase est un peu longue

Ajouter un commentaire