kgaut.net // Développeur web PHP / Drupal freelance
contactez-moi

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

Cet article a été écrit il y a plus de quatre ans, son contenu n'est peut-être plus d'actualité.

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

snippet · 18 Jul 2016 Drupal 8 & Drupal 9 - Taxonomy - Charger l'arborescence d'un vocabulaire snippet · 28 Jul 2017 Drupal 8 - Entité - Champ de base « Référence à un terme de taxonomie » snippet · 5 Jul 2019 Drupal 8 - Surcharger la classe de formulaire d'un terme de taxonomie

Commentaires (0)