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.
Artículos relacionados:
Artículos relacionados:
Tags: librería, PHP, plantillas, TemplatePower, tutorial
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
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.
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?