¿Cómo obtener el nombre del término taxonomía de tid?

32

Muchas de nuestras cosas tienen formato uris site/taxonomy/XX, donde XX es un número entero.

Encontré muchas preguntas como " ¿cómo obtener el TID del nombre? ", Pero me gustaría obtener el nombre del TID. Estoy tratando de armar un script de migas de pan y todo es genial, excepto en estos casos en los que obtengo un rastro como " home > term". En cambio, quiero tenerlo como " home > <TERM NAME>".

¿Como lo puedo hacer?

Brodie
fuente
Grandes respuestas Solo para información: para aquellos que quieren hacer lo contrario, es decir, obtener el nombre del término, también hay un Q&A para eso: drupal.stackexchange.com/questions/36594/… Espero que esto sea útil como motores de búsqueda al buscar respuestas no parece entender el orden de lo que uno necesita en términos de 'de' y 'a'.
therobyouknow

Respuestas:

92

Si está usando Drupal 7, puede usar taxonomy_term_load()

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

Si tiene un montón de ID de términos, puede ahorrar tener que ejecutar una sola consulta para cada carga utilizando taxonomy_term_load_multiple():

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

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

Si está atascado con Drupal 6, puede usar taxonomy_get_term():

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

Desafortunadamente, no hay una opción de carga múltiple para Drupal 6 que conozca.

Clive
fuente
muchas gracias ojalá pudiera más para el soporte de la versión: D
Brodie
pregunta adicional: creo que esto es lo mismo, ¿es bastante fácil configurarlo para que las URL lean el sitio / <nombre del término>? ¿o tendría que establecer eso para cada término individual?
Brodie
3
Puedes hacerlo término por término, pero eso es bastante laborioso. El módulo pathauto se escribió solo para este tipo de situación, puede usarlo para definir patrones para asignar automáticamente alias a términos / contenido / usuarios / etc.
Clive
5

La siguiente función devuelve el nombre de un término de taxonomía basado en su tid:

function get_term($tid) {
  return db_select('taxonomy_term_data', 't')
  ->fields('t', array('name'))
  ->condition('tid', $tid)
  ->execute()
  ->fetchField();
}
houmem
fuente
1
No es aconsejable utilizar funciones de base de datos cuando puede lograr lo mismo con una función API.
Kartagis
44
En algunos casos, es mejor usar la función de base de datos porque las funciones de API cargan un gran volumen de datos
houmem
También es útil cuando los módulos de permiso de acceso de taxonomía restringen el acceso
Dimetry
5

En Drupal 8, puede obtener el nombre de los términos de taxonomía de esta manera:

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

$name = $term->label();

O para cargar múltiples:

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

foreach($terms as $term) {
  $name = $term->label();
}
oknate
fuente
Me sale este error - Aviso: Propiedad indefinida: Drupal \ Core \ Entity \ Plugin \ DataType \ EntityReference :: $ target
Diana
1

Para D7:

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

    dpm($tid);  

  }  

Para D8:

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

Es posible obtener el nombre del término en Drupal 8 de la siguiente manera:

//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
fuente