Inicio > PHP > Smarty

SMARTY

03/05/2015PHP

 

Smarty es un motor de plantillas para php. Esta herramienta facilita la manera de separar la aplicación lógica y el contenido en la presentación. La mejor descripción esta en una situación donde la aplicación del programador y la plantilla del maquetador juegan diferentes roles, o en la mayoria de los casos no la misma persona.
Algunas de las características de Smarty:

  • Es extremamente rápido.
  • Es eficiente ya que puede interpretar el trabajo mas sucio.
  • No analiza gramaticalmente desde arriba el template, solo compila una vez.
  • El está atento para solo recompilar los archivos de plantilla que fueron cambiados.
  • Se pueden crear funciones habituales y modificadores de variables customizados, de modo que el lenguaje de la platilla es altamente extensible.
  • Sintaxis de etiquetas delimitadoras para configuración de la plantilla, así lo puede usar {}, {{}}, , etc.
  • Los construtores if/elseif/else/endif son pasados por el interpretador de PHP, así la sintaxis de la expresión {if ...} puede ser compleja o simple de la forma que usted quiera.
  • Permite un anidamiento ilimitado de sections, ifs, etc.
  • Es posible incrustar directamente codigo PHP en los archivos de plantilla, aunque esto puede no ser necesario(no recomendado) dado que la herramienta se puede ajustar.
  • Soporte de caching incrustado
  • Fuentes de Plantilla absoluto
  • Funciones habituales de manipulación de cache
  • Arquitectura de Plugin

JAVASCRIPT DENTRO DE SMARTY

Cuando se esté trabajando con una plantilla que tiene código javascript hay que tener precaución con las llaves "{}" ya que son caracteres reservados de Smarty y da error. Para evitar el error hay que usar la etiqueta {literal} introducir el código y cerrar la etiqueta con {/literal}.
En Smarty es posible declarar variables, como en todos los lenguajes de programación. Las variables se declaran: {assign var=nombre_variable value=valor}.

COMENTARIOS DENTRO DE SMARTY

Como en cualquier lenguaje de programación en Smarty existe la opción de introducir comentarios que no se van a ver en la página web generada como ocurre con los comentarios html. Para introducir un comentario se usa la llave de apertura y aterisco '{*' y para terminar el comentario se usa asterisco y cierrre de llave '*}'.

IF EN SMARTY

En Smarty también estructuras de control según nos convenga para mostrar una información u otra. Por ejemplo si una variable viene vacía no mostrar un bloque de información o si mostrarlo si contiene información, etc...
Los operadores lógicos en Smarty son:
-Igualdad: '==' o 'eq'
-Distinto '!=' o 'neq'
-Mayor que: '>' o 'gt'
-Mayor o igual que: '>=' o 'gte' o 'ge'
-Menor que: '<' o 'lt'
-Menor o igual que: ?<= ? 0 'lte' o 'le'

ITERAR EN SMARTY

Hay varias formas de iteración en Smarty, como en cualquier lenguaje de programación. En Smarty hay dos maneras para obtener el número de elementos de un array: -count($array_smarty)
-$array_smarty|@count
En Smarty se puede mostrar en iteración se encuentra el bucle con la instrucción: {$smarty.section.nombre_section.iteration} que empieza desde 1 y también se puede sacar el índice de la iteración con la instrucción {$smarty.section.nombre_section.index} que comienza desde 0.

INCLUIR PLANTILLAS DENTRO DE PLANTILLAS DE SMARTY

Lo más común es tener las plantillas divididas en subplantillas y un ejemplo muy claro es tener separado el header y el footer de la página web.
El include de otras plantillas en Smarty es algo sencillo y permite pasar parámetros y dentro de la plantilla se pueden usar los parámetros como variables Smarty.

EJECUTAR PHP DENTRO DE SMARTY

Aunque Smarty no está pensado para programar php dentro de las plantillas si que se puede puede meter código php dentro de Smarty aunque rompe por completo la filosofía de Smarty.
Hay dos maneras de introducir código php en una plantilla Smarty.
-Abriendo un bloque php, dentro de la plantilla, y luego cerrándolo: {php} ? {/php}
-Cambiando la configuración de smarty:
-Se abre el fichero 'Smarty.class.php'.
-Cambiar el atributo '$php_handling' por los siguientes valores posibles:
-SMARTY_PHP_PASSTHRU -> Que imprime las etiquetas php como texto plano. Viendo el código fuente de la página se veran las etiquetas php.
-SMARTY_PHP_QUOTE -> escapa las etiquetas como entidades.
-SMARTY_PHP_REMOVE -> elimina las etiquetas php.
-SMARTY_PHP_ALLOW -> ejecuta las etiquetas php y sta es la opción que permite ejecutar el php. Para usar una variable o array, que se ha asignado en el fichero que referencia a la plantilla Smarty, dentro del php de la plantilla hay que hacer referencia a las variables Smarty.

TRUCOS SMARTY

Mostrar decimales con dos dígitos(En la plantilla)

{$precio|number_format:2:',':'.'}(En la plantilla)
{$precio|string_format:"%.2f"}(En la plantilla)
{$precio|string_format:"%d"} (En la plantilla)

Limpiar caché

$smarty->clear_all_cache(); (dentro de php)

DEBUG

Para hacer debug del código de Smarty basta con con poner la etiqueta {debug} y se podrá ver toda la información de Smarty y la información es bastante completa.