Archivos de Categoría: Drupal 8 - Paginas 3

Tips&Tricks de Twig para Drupal 8

De vez en cuando me toca montar temas de Drupal 8 desde cero y aquí dejo un chuletero útil:

Lo básico lógicamente es definir variables:

  {% set contador = 0 %}

Los if

{% if item.value == 1 %}
{% elseif item.value == 2 %}
{% else %}
{% endif %}

Y recorrer arrays:

{% for key,item in items %}
{% endfor %}

Si tenemos el depurador activado y queremos saber que variables están disponibles en la plantilla (sin usar el kint que te muestra demasiada información)

{{dump(_context|keys) }}

Obtener la ruta de un campo tipo imagen

{{ file_url(node.field_imagen)}}

Sacar el directorio del tema:

<img src="/{{ directory }}/images/left-arrow.png" alt="">

Sacar la ruta de un enlace a partir del id del nodo:

<a href="{{path('entity.node.canonical', {'node': item.nid})}}">

Pintar la traducción de un literal que tengamos dado de alta las traducciones:

{{ 'Search'|trans }}

Operador ternario

{{ contador >  4? 'display:none': ''}}

Mostrar en formato html un campo que contiene etiquetas:

{{content['#contenido']. body |raw}}

URL de la página actual:

<a href="{{ url('<current>') }}">

Generar un enlace pasándole el título, ruta y estilos:

{{ link(item.title, item.url, { 'class':['foo', 'bar', 'baz']} ) }}

Incluir librerías externas (css y js). Para ello primero debemos tener un bloque de liberias en el fichero libraries.yml del tema o del modulo instalado (en mi caso de mi tema themes/mitema/mitema.libraries.yml):

commands:
  version: VERSION
  js:
    js/commands.js: {}
  dependencies:
    - core/jquery
  css:
    base:
      css/referencias.css: {}

Y luego en la plantilla para incluir todas las librerías

{{ attach_library('mitema/commands) }}

Distintas formas de borrar cache de Drupal 8

Si queremos borrar la cache en un Drupal, lo normal es entrar en el administrador y en la ruta http://MI_WEB/admin/config/development/performance darle al botón «Clear all caches» pero si lo que tenemos es un error que no nos permite cargar ninguna página, tenemos varias opciones para hacerlo «a pelo».

La que suelo usar es ejecutar el fichero http://MI_WEB/update.php pero si no estabas logado como administrador antes de que te fallara la web, no tendras acceso a su ejecución. Para permitir la ejecución sin tener que estar logado debemos editar en el fichero \sites\MI_WEB\settings.php y en el parámetro update_free_access :

$settings['update_free_access'] = FALSE;

Luego podremos accede a http://MI_WEB/update.php y volver a dejar el fichero settings.php como estaba para restablecer la seguridad.

La otra opción que es más bruta es vaciar las tablas que se encargan de almacenar el cache de la web:

TRUNCATE cache_config;
TRUNCATE cache_container;
TRUNCATE cache_data;
TRUNCATE cache_default;
TRUNCATE cache_discovery;
TRUNCATE cache_dynamic_page_cache;
TRUNCATE cache_entity;
TRUNCATE cache_menu;
TRUNCATE cache_render;
TRUNCATE cache_toolbar;

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