Listar árbol de taxonomías en idioma determinado con Drupal 8

Si queremos sacar un árbol ordenado de las taxonomías en Drupal 8 debemos hacerlo de la siguiente forma:

  $terms = \Drupal::service('entity_type.manager')->getStorage("taxonomy_term")
                                                  ->loadTree('tags', $parent = 0, $max_depth = NULL, $load_entities = FALSE);

El problema es que siempre nos lo sacará en el idioma por defecto, no hay opción de sacarlo en un idioma determinado, así que la única opción es cargar primero las traducciones en un array y luego recorrer los resultados de la función anterior para ir asociando las traducciones según el orden:


// cargamos en un array las taxonomias con sus traducciones
$query = \Drupal::entityQuery('taxonomy_term');
$query->condition('vid', "tags");
$tids = $query->execute();
$terms = \Drupal\taxonomy\Entity\Term::loadMultiple($tids);
$terminos = array();
foreach ($terms as $tid=>$term) {
   $terminos[$tid] = $term->getTranslation($idioma)->getName();
}

// cargamos el arbol de taxonomias
$terms = \Drupal::service('entity_type.manager')->getStorage("taxonomy_term")
                                                ->loadTree('tags', $parent = 0, $max_depth = NULL, $load_entities = FALSE);
$resultado = array();
foreach($terms as $term){
  $resultado[] = array('tid' => $term->tid, 'name'=>$terminos[$term->tid], 'depth'=>$term->depth);
}
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.