Sugerencia de plantillas para un bloque en base a su región

Todo marcado en drupal es controlado por una plantilla correspondiente, durante el desarrollo de theming podemos sobrescribir las mismas para conseguir diferencias, por ejemplo, podríamos querer alterar el marcado HTML de un bloque en especifico, de una pagina, de una vista, etc. Para conseguir cosas como esta Drupal nos proporciona sugerencias de plantillas en diferentes niveles.

 

Activando el theme debug podemos saber cuales son las sugerencias disponibles como a continuación vemos el ejemplo del bloque sitebranding.

<!-- FILE NAME SUGGESTIONS:
   * block--THEMENAME-branding.html.twig
   x block--system-branding-block.html.twig
   * block--system.html.twig
   * block.html.twig
-->

 

Ahora, presentamos el siguiente caso. Queremos definir marcados diferentes de un bloque de acuerdo a la región en la que se encuentre. La solución que conseguimos es crear una nueva sugerencia de plantilla de una forma muy sencilla

Creamos o editamos si existe el archivo THEMENAME.theme del tema que estemos usando y debemos tener el siguiente código:

<?php

use Drupal\block\Entity\Block;
                                                                                                                                                  
function THEME_NAME_theme_suggestions_block_alter(array &$suggestions, array $variables) {
  $region = Block::load($variables['elements']['#id'])->getRegion();
  $suggestions[] = 'block__' . $region;
}

 

Podrán notar que se esta usando la clase Block al inicio, y dentro del preprocess hook_theme_suggestions_block_alter se conseguira el dato de la región para añadirla como una nueva sugerencia.

Limpiar caché.

Podemos ver inspeccionado el marcado que aparece una nueva sugerencia combinando el nombre "block" con el de la región en la que se encuentra y así finalmente podremos usarla para cumplir con la necesidad que tengamos.

Nuevas sugerncias de plantillas

 

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
CAPTCHA
Esta pregunta para comprobar que eres una persona real e impedir el envío de SPAM.