Drupal drush : comment ajouter un champ lié à un vocabulaire
La solution est simple mais pas forcément évidente.
Imaginez que vous ayez un vocabulaire « MonDico ».
Dans ce dictionnaire (ou « vocabulaire« , pour reprendre l’expression Drupal), vous avez ajouté plein de mots. Enfin, pas des mots, des « termes« , pour reprendre l’expression Drupal.
Imaginez que vous vouliez créer des champs pour ce « vocabulaire« .
Voici le code qui permet de faire cela :
<?php $vocabulary = new stdClass(); $vocabulary->name = 'PAA'; $vocabulary->description = 'Paa - Description'; $vocabulary->machine_name = 'paa'; $vocabulary->help = 'Vocabulaire related to Paa'; $vocabulary->nodes = array(); $vocabulary->weight = 0; taxonomy_vocabulary_save($vocabulary); $vmn = $vocabulary->machine_name; $vvid = $vocabulary->vid; $term = new stdClass(); $term->vid = $vvid; $term->name = 'MonTerme'; $term->description = 'Description of terme'; $term->format = 'text'; $term->parent = 0; $term->vocabulary_machine_name = $vmn; taxonomy_term_save($term); $field = array( 'field_name' => 'test_mon_type', 'type' => 'text', ); field_create_field($field); // Create the instance on the bundle. $instance = array( 'field_name' => 'test_mon_type', 'entity_type' => 'taxonomy_term', 'label' => 'Mon nom de champ', 'bundle' => 'taxonomy', 'required' => TRUE, 'widget' => array( 'type' => 'textfield', ), ); field_create_instance($instance);
Rien de plus simple (mais, comme pour toute chose concernant Drupal en général) : encore fallait-il le savoir !