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
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é :
Pour faire un champ de base référence à un terme de taxonomie, on va utiliser le type "entity_reference", en lui passant évidement le nom du vocabulaire, (ici "option_types") :
Hier, nous avons vu comment surcharger le formulaire de création / modification d'un nœud, voici aujourd'hui comment faire la même chose mais pour un terme de taxonomie.
Ajouter un commentaire