Drupal 8 & Drupal 9 - Créer un vocabulaire de taxonomy et des termes dans le code

Ces bouts de codes peuvent être utilisé dans des hook update ou des fonction de post_update.

Création du vocabulaire

  $vocabulary = \Drupal\taxonomy\Entity\Vocabulary::create(array(
    'vid' => 'nom_machine_du_vocabulaire',
    'name' => t('Nom du vocabulaire'),
  ));
  $vocabulary->save();

Si vous souhaitez tester que le vocabulaire n'existe pas avant :

  $vocabularies = \Drupal\taxonomy\Entity\Vocabulary::loadMultiple();
  if (!isset($vocabularies['nom_machine_du_vocabulaire'])) {
    $vocabulary = \Drupal\taxonomy\Entity\Vocabulary::create(array(
      'vid' => 'nom_machine_du_vocabulaire',
      'name' => t('Nom du vocabulaire'),
    ));
    $vocabulary->save();
  }

Note : Le nom machine du vocabulaire (VID) ne doit pas contenir de caractères spéciaux et doit être plus petit que 32 caractères.

Création des termes

  $terms = ['Terme 1','Terme 2','Terme 3'];

  foreach ($terms as $term_name) {
    $term = \Drupal\taxonomy\Entity\Term::create([
      'vid' => 'nom_machine_du_vocabulaire',
      'name' => $term_name,
    ]);
    $term->save();
  }

Ordre des termes

Il est aussi possible de créer le terme en gérant leur ordre :

  $terms = ['Une minute','Une journée', 'Sur le long terme'];
  $weight = 0;
  foreach ($terms as $term_name) {
    $term = \Drupal\taxonomy\Entity\Term::create([
      'vid' => 'mon_vocabulaire',
      'name' => $term_name,
      'weight' => ++$weight,
    ]);
    $term->save();
  }

 

Contenus en rapport

Drupal 8 & Drupal 9 - Taxonomy - Charger l'arborescence d'un vocabulaire

Pour charger toute l'arborescence :

$categories = \Drupal::service('entity_type.manager')
  ->getStorage('taxonomy_term')
  ->loadTree('NOM_MACHINE_VOCABULAIRE');

Pour charger que l'arborescence en partant d'un taxon (term) donné :

Ajouter un commentaire

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...