Template Power

  • Por
Librería PHP que nos facilita la labor de separar el código PHP del código HTML de una manera fácil y rápida.
Una de las claves de un desarrollo en la web limpio y fácil de mantener es separar el código de la presentación. En esa línea de ideas, las tecnologías modernas, como XML o CSS, ya están pensadas para hacer posible la separación de forma y contenido, cosa que resulta impensable con HTML.

El caso que nos ocupa, Template Power, consiste en un módulo que viene a hacer posible la separación del código PHP y el código HTML de una manera fácil y rápida. Dicho de otra manera, Template Power permite escribir el código HTML en unos archivos llamados plantillas y el código PHP en páginas que no tendrían necesidad de incluir una sola etiqueta HTML, sino que solamente llamarían a las distintas plantillas necesarias para hacer la página.

El producto es gratuito para uso personal y se puede utilizar en versiones de PHP 4.0.1 o superior. Su página de inicio, donde se puede descargar y acceder al manual es http://templatepower.codocad.com.

Método de trabajo

Vamos a describir aquí el método de trabajo usando Template Power, aunque no deseamos alargarnos mucho, ya que el propio producto tiene un completo manual que podemos encontrar incluso en castellano.

Un primer paso sería crear una plantilla, que contendrá código HTML, junto con algunas marcas propias del sistema Power Template. Entre estas podremos encontrar variables, que permiten sustituir el nombre de una variable por un valor, y los bloques, que permiten incluir otras plantillas o una lista de elementos con distintos datos.

La sintaxis de una plantilla sería algo parecido a esto.

<div align=center>{nombrecategoria}</div>
<hr align="center">
<table width="300" cellpadding="2" cellspacing="2" align=center>
<!-- START BLOCK : productos-->
<tr><td>
<b><a href="ficha_producto.php?id={idproducto}">{nombreproducto}</a></b><br>
{descripcionproducto}
</td></tr>
<!-- END BLOCK : productos -->
</table>


En la plantilla del ejemplo podríamos estar visualizando una categoría de productos de una tienda virtual. En la categoría de productos habría un nombre y una lista de productos asociados a la categoría, que podrían ser uno o varios.

Las variables, serían las introducidas entre llaves, por ejemplo {nombrecategoria} y se podrían sustituir por un dato.

Los bloques estarían definidos por una línea de código como la que sigue:

<!-- START BLOCK : productos-->

Con su correspondiente línea de cierre de bloque, situada un poco más abajo. En este caso el bloque sirve para incluir una repetición de productos dentro de una categoría.

Como hemos podido comprobar, en las plantillas no se incluye ni una sola línea PHP. Ahora veremos cómo se programarían las páginas PHP para hacer uso de una plantilla como la que hemos visto.

<?
require "./clases/TemplatePower.inc.php";

$t = new TemplatePower("plantillas/cat_productos.tpl");
$t->prepare();

$t->assign(array(
nombrecategoria => 'Material de cocina',
));

$ssql = "select * from productos where nombrecategoria='Material de cocina'"
$productos = mysql_query($ssql);
while ($fila=mysql_fetch_object($productos)){
$t->newBlock("productos");
$t->assign(array(
nombreproducto => $fila->nombreproducto,
idproducto => $fila->idproducto,
descripcionproducto => $fila->decripproducto
));
}
$t->printToScreen();
?>


Nota: Estos scripts están pensados únicamente para ilustrar el funcionamiento de Template Power. Han sido extractados de una aplicación que he realizado recientemente con este sistema, por lo que pueden estar incompletos o incorrectos sintacticamente.

El uso de plantillas desde el código PHP se realiza a través de una clase llamada TemplatePower, que implementa una serie de métodos útiles para realizar los trabajos necesarios con la plantilla de una manera rápida.

Lo primero es incluir el código de la clase, que se puede descargar desde el sitio de TemplatePower de manera gratuita. Más tarde ya estamos en condiciones de instanciar el objeto plantilla, con el constructor de la clase, indicando por parámetro el archivo desde donde se va a tomar el código HTML.

El método prepare() sirve para que se analice la plantilla. Después de ejecutarlo ya podremos asignar valores a las variables o bloques dentro de las plantillas.

Con el método assign, que recibe un array con los pares Nombre de variable => Valor de la variable, podemos asignar un valor a cada una de las variables de la plantilla.

En el código PHP podremos hacer consultas a la base de datos para extraer los valores e las variables, como es el caso del ejemplo, en el que se extraen todos los productos de una categoría. Con un bucle while, que recorre todos los productos de la base de datos, podemos crear un bloque para cada uno de los productos obtenidos. Para ello está el método newBlock(), que recibe el nombre del bloque que se debe generar. Dentro de cada bloque podemos asignar las variables que contiene la plantilla dentro de dicho bloque, también con el método assign().

Finalmente, cuando se han asignado todas las variables y bloques a la plantilla, se debe invocar el método printToScreen() para escribir el contenido generado por la plantilla y los valores dentro de la página web.

Otras posibilidades

La librería Template Power ha evolucionado bastante con el tiempo. Están por la versión 3.0, que soporta casi cualquier cosa que podamos necesitar en el trabajo de separar el código HTML del PHP.

Incluye soporte para plantillas anidadas, posibilidad de incluir códigos PHP, que se ejecutarían también. Asignación global de variables y asignación en una única sentencia de varias variables.

También podremos salvar en disco y utilizar una plantilla ya analizada, incluso guardar plantillas en la base de datos.

Conclusión

Template Power es un producto muy interesante para separar el código PHP del código HTML. Como es gratuito lo podemos utilizar o probar sin problemas ni desembolsos, aunque si deseamos utilizarlo para un sistema comercial estamos obligados a pagar una tasa, que es realmente asequible (3 US$).

En definitiva, es un sistema que puede subir mucho la calidad de nuestros códigos e incluso aumentar nuestra productividad. Para trabajar con Template Power necesitaremos acostumbrarnos un poco al mecanismo planteado y conocer bien las posibilidades del producto. Todo ello será muy fácil porque en la página de inicio de Template Power (http://templatepower.codocad.com) tenemos unos buenos ejemplos y un manual en varias lenguas.