Come ottenere il nome del termine di tassonomia da tid?


32

Molte delle nostre cose hanno un uris formattato come site/taxonomy/XX, dove XX è un numero intero.

Ho trovato molte domande come " come ottenere il TID dal nome? ", Ma mi piacerebbe ottenere il nome dal TID. Sto cercando di mettere insieme una sceneggiatura breadcrumb e tutto è fantastico, tranne per questi casi in cui sto ottenendo una traccia come " home > term". Invece voglio averlo come " home > <TERM NAME>".

Come posso farlo?


Grandi risposte. Solo per informazioni: per coloro che vogliono fare il contrario - cioè ottenere informazioni dal nome del termine, c'è anche una domanda e risposta : drupal.stackexchange.com/questions/36594/… Spero che questo sia utile come Motori di ricerca quando cerchi le risposte non sembra capire l'ordinamento di ciò di cui si ha bisogno in termini di "da" e "a".
therobyouknow,

Risposte:


92

Se stai usando Drupal 7 puoi usarlo taxonomy_term_load()

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

Se hai un sacco di ID termine, puoi salvare la necessità di eseguire una singola query per ogni carico usando taxonomy_term_load_multiple():

$tids = array(1, 2, 3);
$terms = taxonomy_term_load_multiple($tids);

foreach ($terms as $term) {
  $name = $term->name;
}

Se sei bloccato con Drupal 6 puoi usare taxonomy_get_term():

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

Non esiste alcuna opzione di caricamento multiplo per Drupal 6 che conosco purtroppo.


grazie mille desidero poter aggiungere un extra per il supporto della versione: D
Brodie,

domanda aggiuntiva: penso che sulla stessa linea, è abbastanza facile impostarlo in modo che gli URL leggano il sito / <nome termine>? o dovrei impostarlo per ogni singolo termine?
Brodie,

3
Puoi farlo in base al termine, ma è piuttosto laborioso. Il modulo pathauto è stato scritto proprio per questo tipo di situazione, è possibile utilizzarlo per definire schemi per assegnare automaticamente gli alias a termini / contenuto / utenti / ecc.
Clive

5

La seguente funzione restituisce il nome di un termine di tassonomia basato sulla sua marea:

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}

1
Non è consigliabile utilizzare le funzioni del database quando è possibile ottenere lo stesso risultato con una funzione API.
Kartagis,

4
In alcuni casi è meglio usare la funzione database perché le funzioni API caricano un grande volume di dati
houmem,

Utile anche quando i moduli di autorizzazione di accesso alla tassonomia limitano l'accesso
Dimetry

5

In Drupal 8, puoi ottenere il nome dei termini della tassonomia in questo modo:

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

$name = $term->label();

O per caricare più:

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

foreach($terms as $term) {
  $name = $term->label();
}

Ottengo questo errore - Avviso: proprietà non definita: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana

1

Per D7:

$term = taxonomy_get_term_by_name($term_name, $vocab_name);  
  foreach($term as $key => $data) {  
    $tid = $data->tid;  

    dpm($tid);  

  }  

Per D8:

$term_name = \Drupal\taxonomy\Entity\Term::load(2)->get('name')->value;  
dpm($term_name);  

0

È possibile ottenere il nome del termine in Drupal 8 nel modo seguente:

//Obtain the term.
$tid=1;
$term= taxonomy_term_load($tid);

//get the field name
$term->label();

//or
$term->get('name')->value;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.