Saltar al contenido

Drupal: ¿cómo obtengo una lista de todos los términos de taxonomía asignados a un nodo?

Agradeceríamos tu apoyo para compartir nuestras crónicas con relación a las ciencias de la computación.

Los términos de taxonomía se implementan en los campos en Drupal 7. Suponiendo que haya definido un campo de taxonomía llamado field_category para su tipo de contenido, puede acceder a él como:

$language = 'und'; // or will be provided by some Drupal hooks
foreach ($node->field_category[$language] as $delta => $value) 
  $term = taxonomy_term_load($value['tid']);

Si no tiene acceso al nombre del campo, probablemente la forma más fácil para nodos es consultar la base de datos directamente:

$results = db_query('SELECT tid FROM taxonomy_index WHERE nid = :nid', array(':nid' => $node->nid));
foreach ($results as $result) 
  $term = taxonomy_term_load($result->tid);

Sin embargo, tenga en cuenta que puede terminar tratando con un revoltijo de términos de diferentes vocabularios si tiene más de un campo de taxonomía.

Aquí hay una forma muy genérica de capturar todos los términos sin especificar nombres de campo y sin db_query:

function example_get_terms($node) 
  $terms = array();

  foreach (field_info_instances('node', $node->type) as $fieldname => $info) 
    foreach (field_get_items('node', $node, $fieldname) as $item) 
      if (is_array($item) && !empty($item['tid']) && $term = taxonomy_term_load($item['tid'])) 
        $terms[] = $term->name;
      
    
  
  return $terms;

Comentarios y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *