Beaucoup de nos trucs ont des uris formatés comme site/taxonomy/XX
, où XX est un entier.
J'ai trouvé beaucoup de questions comme "comment obtenir le TID du nom?", mais j'aimerais obtenir le nom du TID
. J'essaie de créer un script de fil d'Ariane et tout va bien, sauf dans les cas où je reçois une piste comme "home > term
". Au lieu de cela, je veux l'avoir comme" home > <TERM NAME>
".
Comment faire?
Si vous utilisez Drupal 7 vous pouvez utiliser taxonomy_term_load()
$term = taxonomy_term_load($tid);
$name = $term->name;
Si vous avez un tas d'ID de termes, vous pouvez éviter d'avoir à exécuter une seule requête pour chaque chargement en utilisant taxonomy_term_load_multiple()
:
$tids = array(1, 2, 3);
$terms = taxonomy_term_load_multiple($tids);
foreach ($terms as $term) {
$name = $term->name;
}
Si vous êtes bloqué en utilisant Drupal 6 vous pouvez utiliser taxonomy_get_term()
:
$term = taxonomy_get_term($tid);
$name = $term->name;
Il n'y a pas d'option de chargement multiple pour Drupal 6 que je connais malheureusement.
Dans Drupal 8, vous pouvez obtenir le nom des termes de taxonomie de cette façon:
$term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($tid);
$name = $term->label();
Ou pour en charger plusieurs:
$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadMultiple($tids);
foreach($terms as $term) {
$name = $term->label();
}
La fonction suivante renvoie le nom d'un terme de taxonomie en fonction de son tid:
function get_term($tid) {
return db_select('taxonomy_term_data', 't')
->fields('t', array('name'))
->condition('tid', $tid)
->execute()
->fetchField();
}
Pour D7:
$term = taxonomy_get_term_by_name($term_name, $vocab_name);
foreach($term as $key => $data) {
$tid = $data->tid;
dpm($tid);
}
Pour D8:
$term_name = \Drupal\taxonomy\Entity\Term::load(2)->get('name')->value;
dpm($term_name);
Il est possible d'obtenir le nom du terme en Drupal 8 de la manière suivante:
//Obtain the term.
$tid=1;
$term= taxonomy_term_load($tid);
//get the field name
$term->label();
//or
$term->get('name')->value;