junio 19, 2009 3

Plantillas sencillas con TemplatePower. Parte III.

By in Librerías, PHP

Hoy vamos a retomar el tutorial sobre TemplatePower. En la anterior entrega vimos como crear bloques con el método newBlock. Hoy vamos a ver como pasar de un bloque a otro y como anidar bloques. Vamos a verlo con un ejemplo en el que tenemos un array donde cada elemento es a su vez otro array. Cada elemento de este último tiene dos campos, fecha y datos. El campo datos será otro array de arrays donde cada elemento contendrá dos campos, cantidad y concepto. Lo que vamos a hacer es sacar una tabla donde aparezca una cabecera con la fecha y luego detallados los conceptos y la cantidad. Al final aparecerá el total. Al final de la tabla aparecerá el total de sumar todos los totales. Veamos como quedaría la plantilla:

ejemploBloques3.tpl:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Segundo Ejemplo con Bloques</title>
</head>
<body>
<table border="1">
<!-- START BLOCK : dia -->
<tr>
<th colspan="2">{fecha}</th>
</tr>
<tr>
<th>Concepto</th>
<th>Cantidad</th>
</tr>
<!-- START BLOCK : dato -->
<tr>
<td>{concepto}</td>
<td>{cantidad}</td>
</tr>
<!-- END BLOCK : dato -->
<tr>
<td><strong>Total</strong></td>
<td>{total}</td>
</tr>
<!-- END BLOCK : dia -->
<tr>
<td><strong>Total final:</strong></td>
<td>{total_final}</td>
</table>
</body>
</html>

y el manejador de la plantilla:

ejemploBloques3.php:

<?php
include('class.TemplatePower.inc.php');

//Array con los datos
$datos = array(
	array('fecha' => '12-06-2009', 'datos' => array(
		array('concepto' => 'Camisa', 'cantidad' => 12),
		array('concepto' => 'Pantalon', 'cantidad' => 25),
		array('concepto' => 'Zapatos', 'cantidad' => 10),
		array('concepto' => 'bolso', 'cantidad' => 14)
		)),
	array('fecha' => '13-06-2009', 'datos' => array(
		array('concepto' => 'Gorra', 'cantidad' => 35),
		array('concepto' => 'Camisa', 'cantidad' => 40),
		array('concepto' => 'Camiseta', 'cantidad' => 25)
		)),
	array('fecha' => '14-06-2009', 'datos' => array(
		array('concepto' => 'Zapatos', 'cantidad' => 30),
		array('concepto' => 'Cinturon', 'cantidad' => 20),
		array('concepto' => 'Sandalias', 'cantidad' => 10),
		array('concepto' => 'Bolso', 'cantidad' => 25),
		array('concepto' => 'Camiseta', 'cantidad' => 25)
		)),
);

$plantilla = new TemplatePower('ejemploBloques3.tpl');
$plantilla->prepare();

$total = 0;
// recorremos el array
foreach ($datos as $dato)
{
	// creamos el bloque 'dia'
	$plantilla->newBlock('dia');
	$plantilla->assign('fecha', $dato['fecha']);
		$total_parcial = 0;
	// recorremos el array
	foreach ($dato['datos'] as $elemento)
	{
		// creamos el bloque dato
		$plantilla->newBlock('dato');
		$plantilla->assign('concepto', $elemento['concepto']);
		$plantilla->assign('cantidad', $elemento['cantidad']);

		$total_parcial += $elemento['cantidad'];
	}

	// volvemos al bloque dia para asignar el total
	$plantilla->gotoBlock('dia');
	$plantilla->assign('total', $total_parcial);

	$total += $total_parcial;

}

// volvemos al bloque raiz para asignar el total de totales
$plantilla->gotoBlock('_ROOT');
$plantilla->assign('total_final', $total);

// generamos las plantillas
$plantilla->printToScreen();
?>

Lo que hacemos es recorrer el array con los datos, con el foreach, y creamos un bloque ‘dia’. Acto seguido recorremos el array con los datos de cada día, de nuevo con un bucle foreach, y  creamos un nuevo bloque ‘dato’ asignado las variables ‘concepto’ y ‘cantidad’, también vamos calculando el total parcial como suma de las cantidades. Acto seguido volvemos al bloque ‘dia’ para asignar la variable total y vamos calculando el total final como suma de los totales parciales. Al finalizar el primer bucle volvemos al bloque raiz y asignamos el total final.

Espero que con este sencillo ejemplo se hayan entendido bien los bloques anidados y el funcionamiénto del método gotoBlock. De todas formas si hay alguna duda en los comentarios se puede preguntar cualquier cosa, que gustosamente trataré de responder.

Ya para finalizar el código con el ejemplo del artículo (no incluye la librería TemplatePower):

Template Power. Segundo ejemplo con bloques.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: , , , ,

3 Responses to “Plantillas sencillas con TemplatePower. Parte III.”

  1. freddy dice:

    Hola. Estoy intentando descargar el TemplatePower pero la web parece no funcionar http://templatepower.codocad.com/ … ¿te pasa lo mismo?¿sabrías algun otro sitio desde el que descargar el cms?

    Gracias

  2. Manuel Jesús Carrascosa de la Blanca dice:

    Hola, acabo de probar ahora mismo y no he tenido ningún problema. Prueba este enlace:
    http://templatepower.codocad.com/download.php. El caso es que si que han hecho algunos cambios en la web, puede ser algo de eso.

  3. maxi dice:

    quiero utilizar variables asignadas desde el php en mi pagina html, pero dentro del tag mismo, por ejemplo para dar style, ejemplo <td border={borderAsignadoEnMiPHP}>……</td>como se hace? se puede?

Leave a Reply