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.

Domingo, 19 octubre 2008 | por | 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.

También puede interesarte ...

Tags: , , ,

7 comentarios a “El motor de plantillas Smarty en aplicaciones como Prestashop”

  1. Creo que esto no hace falta hacerlo ya pero gracias por la aportacion

  2. Chester dice:

    Bueno, yo de nuevo, lo solucione sacando directamente el pie entero, o sea.. dentro del archivo footer.tpl sacando la etiqueta footer directamente =D

  3. Chester dice:

    Digamos, eh revisado pero me di cuenta que no tengo ni el blockvariouslinks ni tampoco el modulo editor de pie que dicen por ahi. O sea.. en todas las carpetas no tenego ese modulo ni tampoco el blockvariouslinks. =(

  4. Chester dice:

    Gracias por responder, en la version 1.4? porq es la version que tengo.

  5. El pie de página suele estar controlado por el modulo blockvariouslinks, al menos en las versiones anteriores a la 1.4

  6. Chester dice:

    Hola, gracias por el aporte, una pregunta: hay alguna forma de sacar el pie de la pagina? ese que dice:
    Descuentos Nuevos productos Mejores ventas Nuestras tiendas Contacte con nosotros Condiciones de uso Sobre Creado por PrestaShop™

    Quiero probar poner otro footer, Gracias.

  7. 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