¿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?


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.


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();
}

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();
}

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);  

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;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.