Uso de Templates con PHP: TemplatePower

Template Power

Template Power, un motor simple, eficaz y veloz para manejar Templates en PHP

PHP se utiliza en gran parte para desarrollo web, pero se vuelve tedioso hacer y mantener sistemas web de gran tamaño. ¿Qué pasa cuando se arma toda una web en PHP mezclado con el HTML y te piden un cambio radical del diseño?

Para evitar esos quebraderos de cabeza, se crearon los Templates, el patrón MVC, SAAS/LESS, SEO y otras tecnologías.

Los templates sirven para separar el diseño/maquetado del código fuente de una web. Algunos también pueden hacer el maquetado “al vuelo”. En este artículo veremos cómo usar TemplatePower con PHP.

Escenario

Supongamos que tenemos un archivo PHP que muestra una lista de noticias y sus comentarios, obtenidos de una base de datos. El código está mezclado con el maquetado, de esta forma:

<?
// Recorrer los datos y mostrarlos secuencialmente
foreach($noticias as $item)
{
	echo "<div>";
	echo "<b>".$item["titulo"]."</b>";
	echo "<p>".$item["contenido"]."</p>";
	echo "<b>Comentarios</b><ul>";
	foreach($item["comentarios"] as $comentario)
		echo "<li>".$comentario."</li>";
	echo "</ul>";
	echo "</div>";
}
?>

Una estructura simple. Pero si los campos a mostrar son varios, hacer un cambio de maquetado puede llevar una gran pérdida de tiempo, ya que quizás con alguna modificación borremos accidentalmente algún dato a mostrar o perdamos de vista algún tratamiento a las variables como parte de la lógica del sistema. Con el siguiente código sucede algo similar:

<? foreach($noticias as $item) { ?>
	<div>
 		<b><?= $item["titulo"]; ?></b>
		<p><?= $item["contenido"]; ?></p>
		<b>Comentarios</b>
		<ul>
			<? foreach($item["comentarios"] as $comentario): ?>
				<li><?= $comentario; ?></li>
			<? endforeach; ?>
		</ul>
	</div>
<? } ?>

El código se asemeja más a la forma de trabajar con templates, pero sigue siendo código fideo: PHP mezclado con HTML.

Utilizar Templates

TemplatePower utiliza código HTML con comentarios y etiquetas como sus plantillas. Se pueden crear bloques repetitivos y etiquetas para poner una sola vez alguna variable en el maquetado. El template para el listado de noticias sería el siguiente:

<!-- START BLOCK : noticia -->
<div>
	<b>{titulo}</b>
	<p>{contenido}</p>
	<ul>
		<!-- START BLOCK : comentario -->
		<li>{comentario}</li>
		<!-- END BLOCK : comentario -->
	</ul>
</div>
<!-- END BLOCK : noticia -->

Quizás no sea el mejor ejemplo, pero en una web tipo carrito de compras puede aligerar y separar muy bien la lógica de negocios del diseño.
Los bloques son estructuras pensadas para que se pueda poner contenido en forma de lista, uno tras otro.

El código en PHP para manejar el Template es más simple todavía:

<?php
// Cargar e inciializar
require("include/class.TemplatePower.inc.php");
$tpl = new TemplatePower("index.tpl");
$tpl->prepare();
// Recorrer los datos y mostrarlos secuencialmente
foreach($noticias as $item)
{
	$tpl->newBlock("noticia");

	// Si los campos a rellenar tienen los mismos nombres que
	// los indices de las matricies
	// podemos ahorrar todas las asignaciones con esta llamada
	// $tpl->assign($item);

	// De igual manera, podemos asignar valores individualmente
 	$tpl->assign("titulo", $item["titulo"]);
	$tpl->assign("contenido", $item["contenido"]);

	foreach ($item["comentarios"] as $comentario) {
		$tpl->newBlock("comentario");
		$tpl->assign("comentario", $comentario);
	}

	// Terminamos con el bloque y volvemos a la raíz
	// viene bien cuando tenemos bloques dentro de otros
	$tpl->gotoBlock("_root");
}

$tpl->printToScreen();
?>

Separamos de manera eficaz el código PHP con todo su procesamiento de datos, y al final solo se da la salida al Template y ¡Listo!

Pagina oficial de TemplatePower

Descargar
Descargar archivos utilizados en el articulo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Visual Basic y mucho más
CyberChimps