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

Posté le Lundi 18 juillet 2016 - 08:20
Dernière mise à jour le Mercredi 27 janvier 2021 - 11:01

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();
  }

 

Aller plus loin ?

 

Ajouter un commentaire

Ne sera pas publié

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