Estás en Inicio / Editorial / PHP
22.11.2007
Smarty es una herramienta que permite crear plantillas, personalizar, adaptar y distribuir funcionabilidades complejas dentro de un marco de desarrollo limpio. Smarty cuenta con una sintáxis propia que lo hace muy atractivo de utilizar y sencillo en especial para diseñadores web.
Siguiendo con nuestra serie de artículos: Smarty: razones para utilizar plantillas en mis proyectos, Smarty: requerimientos, instalación y aprende a programar, ahora nos corresponde hablar sobre Smarty pero a nivel avanzado. Smarty cuenta con estructuras de control propias, cuando compilamos nuestra plantilla, verificará que no haya sido procesada antes, haciendo que la carga sea más rápida.
En la carpeta definida para los archivos compilados de las plantillas encontraremos el código PHP. Lo que demuestra que aunque la plantilla original tenga una sintaxis distinta, el archivo generado y ejecutado es un archivo PHP.
En todo lenguaje existen los calificadores, que permiten hacer comparaciones entre variables. Smarty tiene los propios un tanto distintos a los que estamos acostumbrados:
Tabla: para los operadores lo recomendable es utilizar las alternativas, pero también es permitido utilizar los calificadores originales. Para los operadores AND / OR puede utilizarse el operador lógico (and / or) o && (and) / | | (or).
Sentencia IF:
{if $name eq "Fred"}
Welcome Sir.
{elseif $name eq "Wilma" or $name eq "Vilma"}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
Las section del template son usadas para realizar un ciclo (loop) de un arreglo de datos. Todas las etiquetas {section} deben tener su par {/section}. Los parámetros requeridos son name y loop. El nombre de la section puede ser el que usted quiera, formado por letras, números y subrayados.
Las sections pueden ser anidadas pero diferenciando unas de otras. Las variables del loop (normalmente una matriz de valores) determina el número de veces del loop de la section.
Cuando estuviera mostrando una variable dentro de una section, el nombre de la section debe estar al lado de la variable dentro de corchetes []. sectionelse es ejecutado cuando no hubiera valores para la variable del loop(ciclo).
<?php
$data = array(1000,1001,1002);
$smarty->assign('custid',$data);
?>
{* este ejemplo imprime todos los valores del arreglo *}
{section name = customer loop = $custid}
id: {$custid[customer]} <br />
{/section}
<hr />
{* imprime todos los valores del arreglo en orden descendente *}
{section name=foo loop=$custid step=-1}
{$custid[foo]} <br />
{sectionelse}
no hay valores en la variable
{/section}
También, puede hacerse un ciclo sin un arreglo para tratar. Este ejemplo iniciará el contador en 10 e irá de 2 en 2 hasta el número 20:
{section name = foo start = 10 loop = 20 step = 2}
{$smarty.section.foo.index}
{/section}
Los ciclos foreach son una alternativa para loop {section}. Foreach es usado para pegar cada elemento de una matriz asociativa simple. La sintaxis para foreach es mucho más simple que section, pero tiene la desventaja de que solo puede ser usada en una única matriz, la etiqueta {foreach} debe tener su par {/foreach}.
Los parámetros requeridos son from e item, el nombre del ciclo foreach puede ser cualquier cosa que usted quiera, hecho de letras, números y subrayados. Los ciclos foreach pueden ser anidados, y el nombre de los ciclos anidados, debe ser diferente uno de otro. La variable from (normalmente una matriz de valores) determina el número de veces del ciclo foreach, el cual será ejecutando cuando no hubiran más valores en la variable from.
<?php
$arr = array( 1001,1002,1003);
$smarty->assign('custid', $arr);
?>
{* este ejemplo muestra todos los valores de la matriz $custid *}
{foreach from = $custid item = curr_id}
id: {$curr_id}<br />
{/foreach}
Recordemos que para arreglos asociativos, el signo de separación es el punto ( . ). Además, existe un conjunto de propiedades disponibles dentro del ciclo, como el número de interacción, la llave asociativa, etc.
Smarty tiene un conjunto de funciones integradas bastante grandes, enumerar cada una de ellas con sus características y mostrar un ejemplo, haría que este artículo fuese demasiado extenso. A continuación, muestro un listado de algunas funciones interesantes y una pequeña descripción:
Smarty puede ser personalizado, agregando nuevos plugins con lo cual automatizamos funciones para ser utilizadas dentro del template.
Podemos agregar nuestros propios scripts para extender: funciones, modificadores, funciones de bloque, funciones de compilación, prefiltros, postfiltros, filtros de salida, recursos e inserts. Generalmente escribiremos funciones y modificadores.
Los archivos y funciones de Plugin deben seguir una convención de apariencia muy especifica a fin de que pueda ser localizada por el Smarty. Los archivos de plugin deben ser nombrados de la siguiente forma: type.name.php. Donde type es uno de los siguientes tipo de plugin:
Algunos ejemplos: function.html_select_date.php, resource.db.php, modifier.spacify.php. Las funciones de plugin dentro de los archivos de plugin deben ser nombradas de la siguiente forma: smarty_type _name() .
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: function.eightball.php
* Type: function
* Name: eightball
* Purpose: outputs a random magic answer
* -------------------------------------------------------------
*/
function smarty_function_eightball($params, &$smarty)
{
$answers = array('Yes',
'No',
'No way',
'Outlook not so good',
'Ask again soon',
'Maybe in your reality');
$result = array_rand($answers);
return $answers[$result];
}
?>
Question: Will we ever have time travel?
Answer: {eightball}.
Ahora bien, debemos reconocer que no existe solamente Smarty como motor de plantillas, sino que existen muchas más alternativas de proyectos con características similares y otras funcionabilidades.
En el próximo artículo y final de la serie sobre Smarty, enumeraremos cuales son esas alternativas junto con sus principales características. En fin, Smarty demuestra ser una herramienta valiosa, open-source y con una gran capacidad de expansión.
Califica esta nota:
Juan Manuel Lemus
Editor del blog DotPress. Creador de la metodología de desarrollo L5 y jefe del proyecto Apperture Web Framework.
Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.
Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?
2 comentarios en total.
hola amigos participantes de evento blog, he elegido este método de presentación, un poco extraño debido a que no he podido asistir al proceso de publicación de nuevos proyectos empresariales por no cumplir dos condiciones; una que no estoy funcionando aún, y la segunda y mas importante es ….que llegue tarde a la inscripción.
De todas maneras quiero presentaros mi idea, el proyecto en que me embarco se llama http://www.disemdi.com y consiste en un periódico digital con formato de superblog.
Tu nos envias un articulo y te lo publicamos con un vinculo a tu pagina, hasta ahí todo normal, pero además ponemos un contador de visitas, y a fin de mes compartimos con los escritores, según las visitas que tenga cada uno, el cincuenta por ciento de nuestros ingresos, que se basan en la publicidad.
Ya hemos reunido un pequeño grupo de personas en un blog provisional; http://www.wwwdisemdicom.blogspot.com y tenemos una maqueta de lo que será nuestra web http://www.disemdi.blogsome.com si te atrae el proyecto mándanos tu bio, saldremos en navidad.
Un saludo
Jose Guillermo Chacón Montes.
Lonuestro27@hotmail.com
Habra que ponerse las pilas con Smarty. Saludos.
Maestros del Web es el punto de encuentro para los entusiastas de la red.
Creative Commons by-nc-sa 3.0 | Política de Privacidad | CMS: Wordpress