Tutorial: Plantillas con PEAR y PHP

Lo primero decir, que cuando se comienza a programar en PHP es común mezclar el código PHP con el HTML, intercalándo con prints. Esta práctica puede parecer fácil en un primer momento, pero la verdad es que es poco recomendable porque luego es muy difícil de mantener. Pero... que podemos hacer para evitar mezclar código php y html?

Uso de plantillas en PHP con PEAR

Las plantillas son la solución a nuestros problemas, hay muchos motores de plantillas (Smarty, PEAR y algunos otros). Smarty no me termina de convencer porque a pesar de separar el HTML del PHP sí que incluye bucles y condiciones en las plantillas, lo cual dificulta ser leidas por un maquetador, además, al final eso permite mezclar programación en la plantilla y eso no me parece del todo correcto. En este tutorial explicaremos los fundamentos de PEAR para el manejo de plantillas.

Lo primero que deberemos hacer es bajar el PEAR.php y el IT.php, IT.php es el motor de plantillas de PEAR. En esos enlaces que he puesto podremos descargar los comprimidos que llevan documentació y otros archivos php. Para las plantillas solo necesitamos pear.php y it.php

Los pondremos en un directorio de librerias de nuestra web.

<?php
// Incluimos nuestro archivo config donde meteremos las constantes
require_once "config.php";
// en DIR_PEAR tenemos la ruta de la libreria PEAR
require_once DIR_PEAR."IT.php";

// Inicializamos el objeto de template. Le pasamos la ruta donde estan las tpl.
$tpl = new HTML_Template_IT(DIR_TEMPLATES);

// Cargamos la plantilla matematicas.tpl
$tpl->loadTemplatefile('matematicas.tpl', true, true);

// Rellenamos un option de html con valores
$operaciones = array("Sumas"=>"+","Restas"=>"-","Multiplicaciones"=>"x");
foreach ($operaciones as $text=>$value){

// Le decimos que vamos a rellenar un bloque (definido en la tpl entre BEGIN/END)
        $tpl->setCurrentBlock("op_operacion");
// Damos valor a la variable de la tpl VALUE con el valor del array (las variables van entre {})
        $tpl->setVariable("VALUE",$value);

// Damos valor a la variable de la tpl TEXT con el valor del array
        $tpl->setVariable("TEXT",$text);
// Le indicamos al motor de plantillas que parsee el bloque actual (que lo coloque)
        $tpl->parseCurrentBlock();
}
// Le decimos al motor de plantillas que pinte el bloque
$tpl->show();

 

La tpl sería matematicas.tpl

<table>
<tr>
<td>
  <select name="operacion">
  <!-- BEGIN op_operacion --> <!-- Indicamos el inicio de un bloque de tpl -->
  <option value="{VALUE}">{TEXT}</option>
  <!-- END op_operacion -->  <!-- Indicamos el fin de un bloque de tpl -->
  </select>
</td>
</tr>
</table>

Resumen del motor de plantillas

Tenemos dos archivos, uno será el php y otro la tpl. En el php cargaremos la tpl con los bloques (comienzan con BEGIN y terminan con END), los bloques se rellenan de datos.

Votos totales: 146