Plates, el sistema de plantillas para PHP que facilita el desarrollo web

4min

A la hora de crear una web, en PHP, existen multitud de librerías de plantillas. Una de las más conocidas es Smarty, aunque en este artículo nos centraremos en Plates, menos popular pero muy potente y sencillo de utilizar. A diferencia de otras plantillas en las que la sintaxis es diferente a la del lenguaje en el que estamos trabajando y es necesario compilarlas antes de ser usadas, con Plates tenemos un sistema que no implementa nuevas sintaxis y utiliza estructuras de control de PHP para expresar las operaciones típicas.

Inspirado en Twig, el motor de plantillas de Symfony, Plates es una alternativa funcional, rápida y que ayuda a solucionar multitud de necesidades sin grandes complicaciones. Veamos los siguientes ejemplos:

  • Herencia en plantillas.
  • Creación de múltiples layouts.
  • Organización de las plantillas en directorios con espacios de nombres.
  • Envío de datos a las plantillas y posibilidad de compartirlos entre varias.
  • Extensibilidad por funciones o grupos de funciones (extensions).
  • Funciones de escape para los datos volcados en las plantillas.
  • Independiente del framework o aplicación, adaptable a cualquier proyecto.
Índice

Instalación de PlatesPHP

Se recomienda instalar a través de Composer, y será tan sencillo como indicar la dependencia.

Recuerda agregar el require en tu composer.json. (league/plates: «3.*»)

Usar el sistema de plantillas Plates

Instalada la dependencia y habiendo invocado el autoload de Composer, deberás instanciar la clase Engine para empezar a usar tus templates.

$templates = new LeaguePlatesEngine( 'ruta/a/las/plantillas');

Una vez instanciado el engine, deberás indicar la ruta donde se encuentran tus plantillas. Si las tienes todas en el mismo directorio, no tendrías que hacer nada más, pero si quieres tener más de una ruta deberás agregarlos en el engine.

$templates->addFolder('espacio_nombres_plantillas', 'otra/ruta/diferente');

Si queremos ejecutar un template tenemos que indicar qué plantilla queremos renderizar. Una de las maneras más rápidas de realizarlo es utilizando el método render() del engine, indicando el nombre de la plantilla y los datos que le queramos enviar.

$templates->render('plantilla_a_renderizar', ['dato' => 'Valor del dato']);

La plantilla a renderizar tiene extensión .php, aunque no hace falta indicársela si esta no ha sido cambiada. Si la plantilla estuviera en un subdirectorio, habría que indicarlo de esta manera:

$templates->render('subcarpeta/plantilla_a_renderizar');

Encontrarás en el scope global los datos que llegan al script de la plantilla.

Si estuviera en otra carpeta la plantilla que has guardado, con addFolder(), indicas el espacio de nombres de esa ruta con «::» separando al nombre de la plantilla que buscas.

$templates->render('espacio_nombres_plantillas::plantilla_a_renderizar');

Uso de Layouts

Cualquier página web suele tener una cabecera y un pie. Con el uso de los layouts, podrás conseguir que la estructura de la página esté dentro del mismo archivo.

Aquí puedes ver un layout: (archivo milayout.php)

<!DOCTYPE html>
 <html lang='en'>
 <head>
     <meta charset='UTF-8'>
     <title>Aquí el título </title>
 </head>
 <body>
     <header>
         Aquí el logo 
     </header>
     <?=$this->section('content')?>
     <footer>
         Los enlaces  del pie
     </footer>
 </body>
 </html>

El bloque $this->section('content') se colocará como cuerpo de la página.

Plantilla que usa este layout.

<?php $this->layout('milayout') ?>
<p>Cuerpo de página.</p>
<p>Plates en Arsys</p>

Con la primera línea, $this->layout('milayout'), indicamos que el HTML del layout está en milayout.php. El resto es el cuerpo que se colocará en el template, una vez que se aplique el layout.

Fernán García de Zúñiga

Productos relacionados: