El motor de plantillas Smarty en aplicaciones como Prestashop

Smarty es un motor de plantillas para PHP. Smarty separa el código PHP del código HTML y genera contenidos web mediante a la colocación de etiquetas Smarty en un documento.

  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Add to favorites
  • LinkedIn
  • Meneame
  • MySpace
  • Ping.fm
  • Technorati
  • Twitter
  • Wikio
  • BarraPunto
  • Bitacoras.com
  • Live
  • MSN Reporter
  • Reddit
  • Yahoo! Bookmarks

Domingo, 19 Octubre 2008 | por Luis A. Serrano | Categoría: Prestashop

Conviene que tengamos claro que es Smarty y si nuestra aplicación o CMS hace uso de él para evitarnos algunos quebraderos de cabeza posteriores.

Smarty es un motor de plantillas para PHPW. Smarty separa el código PHP del código HTML y genera contenidos web mediante a la colocación de etiquetas Smarty en un documento. Se encuentra bajo la licencia LGPLW por lo que puede ser usado libremente.

Estas son las funcionalidades que obtendremos con Smarty:

  • Plantillas limpias fáciles de usar por los diseñadores.
  • Escalabilidad.
  • Mantenimiento más sencillo (al igual que la escalabilidad, únicamente con la separación de código y presentación no se consigue un mantenimiento más sencillo, también se requerirá de una buena codificación).
  • Depuración óptima del código, al tener ficheros pequeños únicamente con código PHP.
  • Posibilidad de introducir comentarios dentro de las plantillas que no se enviarán al servidor. Ejemplo: {* comentario smarty *} en lugar de<!-- comentario HTML -->
  • Funciones integradas que facilitan el tratamiento de variables. Ejemplos: {foreach}{/foreach}{if}{else}{/if}.
  • Funciones asistentes para generación de código HTML. Ejemplos:{html_image file=”banner.jpg”} generaría <img src="banner.jpg" alt="" width="700" height="55" />
  • Expandir Smarty con más funcionalidades mediante plugins.
Tenemos que tener claro que utilidad tienen algunos parámetros de la configuración de Smarty del archivo config.inc.php o al menos saber de su existencia:                     

$plantilla->caching = 1.- Activa la cache
$plantilla->display(‘plantilla.tpl’).- El fichero plantilla.tpl debe contener la plantilla a devolver
$html = $plantilla->fetch(‘planilla.tpl’).- Para no volcar al navegador el html y tenerlo almacenado en la variable $html.
$plantilla->cache_dir = ‘/tmp/smarty/’.- Grabará las planillas cacheadas en este directorio (smarty cachea el contenido en disco por defecto)
$plantilla->cache_lifetime = 300.- El contenido permanece en cache 5 minutos (300 segundos) antes de ser reemplazado. El valor por defecto es una hora.
$plantilla->compile_check = true.- Verifica si la plantilla ha sido actualizada desde la última vez que se regeneró la caché. Introduce una pequeña sobrecarga al tener que averiguar y comparar la fecha de modificación de la plantilla.

$plantilla->force_compile = true.- Siempre regenerará la cache
$plantilla->is_cached(‘plantilla.tpl’).- Detecta si una plantilla está en el cache o no.
$plantilla->assign(‘variable’,$var).- La plantilla puede ahora leer la variable $var, con el nombre {variable} generando así contenido realmente dinámico
$plantilla->clear_cache(‘plantilla.tpl’).- Elimina la cache para esta plantilla
$plantilla->clear_all_cache().- Elimina todas las caches (en el directorio de cache)

SMARTY EN PRESTASHOP

Por ejemplo en la aplicación de comercio electrónico Prestashop nos encontramos la variable:
 $smarty->force_compile = true;
activada por defecto y es lógico que así sea al principio cuando estamos desarrollando, configurando y personalizando la aplicación.
Lo que ocurre es que cuando dejamos operativa la tienda la velocidad de navegación se ve mermada notablemente por lo que deberemos cambiar esta opción dejándola así:
 $smarty->force_compile = false;
El cambio es importante ya que de esta forma no regenera la cache y por consiguiente conseguimos aumentar la velocidad notablemente.

¿Qué ocurre si luego tenemos que editar alguna plantilla .tpl para hacer algún cambio?

Deberemos acordarnos de cambiar a false el parámetro  $smarty->force_compile = true; porque de lo contrario los cambios en las plantillas no surtirán efecto y podemos volveros locos pensando en algún error de cache o de servidor sin tener nada que ver con este problema.
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Add to favorites
  • LinkedIn
  • Meneame
  • MySpace
  • Ping.fm
  • Technorati
  • Twitter
  • Wikio
  • BarraPunto
  • Bitacoras.com
  • Live
  • MSN Reporter
  • Reddit
  • Yahoo! Bookmarks

También puede interesarte ...

Tags: , , ,

Un comentario referente a “El motor de plantillas Smarty en aplicaciones como Prestashop”

  1. AVISO IMPORTANTE: A partir de la versión estable 1.1 de Prestashop esto ya está optimizado y no hace falta hacer ningún tipo de cambio de este tipo.

Deja un comentario