Pré-remplir un champ de taxonomie lors de la création d'un node

Pré-remplir un champ de taxonomie lors de la création d'un node

20 Sep 2010 |  Drupal

Aujourd’hui, juste un petit bout de code (ça changera un peu des posts à rallonge de ces derniers temps) afin de pré-remplir les champs taxonomies de vos formulaires.

Il n’y a pas de raison qu’un vulgaire champs texte soit renseigné alors que vos champs de taxonomie restent sans valeur. Bien sûr, le code ci-dessous est à placer dans un module que vous aurez crée au préalable :)

Pour pré-remplir nos champs il nous faut intervenir entre le chargement du formulaire et l’affichage de celui-ci à l’utilisateur. La solution consiste donc à implémenter le hook_nodeapi, à récupérer le term que vous désirez et à l’insérer dans l’objet $node lors de l’étape ‘prepare’.

function mymodule_nodeapi(&$node, $op) {
  // Remplacer type par le nom de votre type de contenu
  if ($node->type == ‘type') {  
    switch ($op) {
     case 'prepare' :
       // On vérifie que le node est bien en cours de création
       if (!isset($node->nid)) { 
         $vocabularies = taxonomy_get_vocabularies();
         foreach ($vocabularies as $vocabulary) {
           // recherche sur le nom de votre vocabulaire
           if ($vocabulary->name === 'vocabulary_name') { 
             // Récupération de tous les termes d’un vocabulaire.
             $terms = taxonomy_get_tree($vocabulary->vid);
             foreach ($terms as $term) {
               // recherche sur le nom de votre terme
               if ($term->name === 'term_name' ) { 
                 $node->taxonomy = array($term);
               }
             }
           }
         }
       }          
       break;
    }
  }
}

En insérant un objet taxonomy pendant cette étape, le form sélectionnera le term lors de l’affichage à l’utilisateur.

Pour récupérer votre terme, aidez vous des différentes fonctions de taxonomies (oui il y en a beaucoup)

Attention toutefois, les Ids des termes et des vocabulaires peuvent changer d’un site à un autre et peuvent fausser vos développements. Soyez donc prudents sur vos conditions de recherche et validation de vos vocabulaires et de vos termes.

Julien Dubreuil

Vous avez une idée, un projet web à réaliser ?

Ensemble, mettons en oeuvre sa réussite. Je vous accompagne dans vos projets, depuis l'élaboration du cahier des charges jusqu'à la mise en production. Pour plus d'information n'hésitez pas à me contacter.

Contactez-moi