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); }
0 Comentarios.