Poner target blank a enlaces externos

Si queremos que todos los enlaces externos de nuestra web se abran en una ventana nueva, podemos usar javascript a pelo sin necesidad de jquery

window.onload = function() {
   var links = document.getElementsByTagName('a');
   for (var i = links.length-1; i >= 0 ; i--) {
       if(links[i].host !== window.location.host) links[i].setAttribute('target', '_blank');
    }
}

Eliminar metatag generator en Drupal 8

En Drupal es habitual que te meta el metatag de generado por Drupal, cosa que no me suele gustar por dar pistas a los malos… así que para eliminarlo en Drupal 7 existía un módulo pero en Drupal 8 no lo he encontrado así que he preparado un par de líneas para quitarlo. En el fichero .theme de nuestro tema debemos poner:

function NUESTROTEMA_page_attachments_alter(array &$page) {
    foreach($page['#attached']['html_head'] as $id=>$tag){
      if($tag[1] == 'system_meta_generator'){
        unset($page['#attached']['html_head'][$id]);
      }
    }
}

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