twig

Plantillas basadas en tipos de contenidos

Drupal 8 nos trae en su núcleo muchas plantillas correspondientes a cada parte del framework, cada una de ellas nos proporcionan el marcado html que se mostrará correspondientemente. Es una práctica común sobreescribir estos templates en un tema personalizado debido a que necesitamos un marcado diferente justo para el mismo, esto se realiza creando una plantilla con el mismo nombre del que queremos sobreescribir pero en nuestro tema personalizado, por ejemplo:

 

Hemos creado un tema personalizado que tiene como base el tema classy, así que el marcado html de todo lo que va en el body e imprime las regiones sería el page.html.twig que es llamado desde la siguiente ruta:

 

core/themes/classy/templates/layout/page.html.twig

 

Si deseamos sobreescribir esa salida a nuestro antojo, haremos lo que indicamos al inicio crear uno en nuestro tema:

 

themes/custom/theme_name/pages/page.html.twig

 

Es así que actúa la sobreescritura de plantillas.

 

Esto es muy útil para el desarrollo porque rompe los límites a nuestras soluciones, sin embargo hay ocasiones particulares en las que hay que hacer algo más.

 

Querer una plantilla page.html.twig para cierto tipo de contenido, es un caso particular y para este caso se realiza lo siguiente:

 

  • Primero debemos usar el hook_theme_suggestions_HOOK_alter

  • Identificar y obtener el nodo en el que nos encontramos

  • Obtener el tipo de nodo al que pertenece

  • Añadir al array $suggestions[] con un formato adecuado

 

function themename_theme_suggestions_page_alter(&$suggestions, $variables) {
  //Get current node
  $node = \Drupal::request()->attributes->get('node');

  if ($node) {
    //Node type project && page template
    if ($node->getType()) {
      suggestions[] = 'page__' . 'node__type' . '_' . $node->getType();
    }
  }
}


 

Una vez implementado el código, debe limpiarse caché. Usando el modo debug de Drupal, podremos ver en nuestras sugerencias. Podrán notar una (x) al inicio el cual indica la plantilla que está usando.

sugerencias

 

Teniendo la sugerencia a la vista, debemos crear la plantilla en nuestro tema y limpiar caché (Cada vez que se agrega una nueva plantilla debe limpiarse caché) ahí se verá que se está usando la nueva plantilla para personalizarlo de la manera que necesitamos.

 

Usando sugerencia de plantilla

 

Me pareció interesante el artículo

Deseo más información

O también puedes comunicarte con nosotros.

por whatsapp por whatsapp

Añadir nuevo comentario

Protected by Spam Master

Me gustaría más información sobre:

CAPTCHA
Protected by Spam Master