Comment obtenir le nom de taxonomie de tid?

32

Un grand nombre de nos fichiers ont un format uris comme site/taxonomy/XX, où XX est un entier.

J'ai trouvé beaucoup de questions du type " comment obtenir le TID du nom? ", Mais j'aimerais obtenir le nom du TID. J'essaie de composer un fil d'Ariane et tout est génial, sauf dans les cas où je commence à avoir des traces du genre " home > term". Au lieu de cela, je veux l'avoir comme " home > <TERM NAME>".

Comment puis-je le faire?

Brodie
la source
Grandes réponses. Seulement pour info: Pour ceux qui veulent faire le contraire - c'est-à-dire se débarrasser du nom du terme, il existe également un forum de questions - réponses : drupal.stackexchange.com/questions/36594/… J'espère que cela vous aidera en tant que moteur de recherche lorsque vous cherchez des réponses ne semble pas comprendre l'ordre de ce dont on a besoin en termes de «de» et de «à».
therobyouknow

Réponses:

92

Si vous utilisez Drupal 7, vous pouvez utiliser taxonomy_term_load()

$term = taxonomy_term_load($tid);
$name = $term->name;

Si vous avez plusieurs identifiants de termes, vous pouvez éviter de lancer une requête unique pour chaque charge 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é avec Drupal 6, vous pouvez utiliser taxonomy_get_term():

$term = taxonomy_get_term($tid);
$name = $term->name;

Malheureusement, je ne connais pas d’option de chargement multiple pour Drupal 6.

Clive
la source
je vous remercie beaucoup je souhaite pouvoir plus en plus pour le support de version: D
Brodie
question supplémentaire: Je pense que cela va dans le même sens, est-il assez facile de le configurer pour que les URL lisent le site / <nom du terme>? ou devrais-je définir cela pour chaque terme individuel?
Brodie
3
Vous pouvez le faire terme par terme, mais c'est assez laborieux. Le module pathauto a été écrit juste pour ce genre de situation, vous pouvez l'utiliser pour définir des modèles d'attribution automatique d'alias aux termes / contenu / utilisateurs / etc.
Clive
5

La fonction suivante renvoie le nom d'un terme de taxonomie basé sur son tid:

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}
houmem
la source
1
Il n'est pas conseillé d'utiliser les fonctions de base de données lorsque vous pouvez obtenir la même chose avec une fonction API.
Kartagis
4
Dans certains cas, il est préférable d'utiliser la fonction de base de données car les fonctions de l'API chargent un grand volume de données
houmem
Aussi utile lorsque les modules d'autorisation d'accès taxonomiques restreignent l'accès
Dimetry
5

Dans Drupal 8, vous pouvez obtenir le nom des termes de taxonomie de la manière suivante:

$term = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($tid);

$name = $term->label();

Ou pour charger plusieurs:

$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadMultiple($tids);

foreach($terms as $term) {
  $name = $term->label();
}
oknate
la source
Je reçois cette erreur - Remarque: propriété non définie: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana
1

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);  
Anupriya_vij
la source
0

Il est possible d’obtenir le nom du terme dans 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;
JHONATAN DAVID FERNANDEZ ROSA
la source