1 febrero 2019
Comments: Comentarios desactivados

Conociendo Smarty, el motor de plantillas de Prestashop

Smarty ofrece herramientas a diseñadores y programadores para poder optimizar su trabajo y de esta manera hacerlo mas sencillo. Con este tutorial os enseñaremos algunas de estas herramientas y así poder ver lo que Smarty nos puede ofrecer.

MODIFICADORES DE VARIABLES

Cuando mostramos contenido en una Web, puede que nosotros queramos cambiar determinados aspectos de esta dependiendo de cuando nuestro cliente la visite. Por ejemplo, mostrar una fecha en diferentes formatos. Usando Smarty no hay necesidad para el programador de intervenir en esto. El programador solo tendrá que pasar la fecha en la variable adecuada hacia el template, y el diseñador podrá darle el formato que el desee.

El diseñador también podrá poner esta variable en mayusculas o minusculas, truncar un bloque de texto, añadir espacios entre caracteres, y todo esto hecho y mostrado al mismo tiempo por Smarty.

Vamos a poner un ejemplo practico. Imagina como mostrar el titulo de una categoria de producto en mayusculas y cada caracter de este titulo separado con espacios (‘C A S A S’) en una base de datos. En la base de datos solo se mostraría la palabra ‘CASAS’. Con Smarty no tendrías que preguntar al programador para cambiar este texto a ‘C A S A S’ en la base de datos, ya, que tu como diseñador podrias cambiar como se mostraria esta variable, cuantas veces mostrarla y modificarla a tu antojo.

FUNCIONES DEL TEMPLATE

Otro concepto de Smarty que podemos descubrir son las funciones del template. Piensa en diseñar un gran formulario con muchos ‘dropdowns’. La manera antigua de hacer esto sería escribiendo uno por uno ese dropdown hasta tener los que nosotros necesitaramos. Pues bien, con Smarty simplemente escribiriamos una funcion con un unico dropdown y llamariamos a esta funcion en el template cada vez que necesitaramos implementar uno, haciendo nuestra tarea de diseño, mas rapida y eficaz. Esto es solo un ejemplo, pero imagina la cantidad de trabajo que esto nos podria ahorrar en grandes proyectos.

DEBUGGING

En el proceso de diseño y programacion de un software, programadores y diseñadores necesitamos debuggar nuestro codigo para ver por nosotros mismos si estas aplicaciones hacen el trabajo para el que han estado diseñadas. Pìensa en cuanto tiempo puedes gastar si te equivocas en una variable y no tienes dichas herramientas para hacerlo. En mi experiencia como programador, es uno de los peores escenarios con los que te puedes encontrar, incluso mas si estos fallos son producidos a la hora de programar un algoritmo. Incluso pudiendo debugar con PHP, Smarty nos ofrece una herramienta de debug relacionada sobretodo con los errores mas frecuentes con Smarty.

Esta es una herramienta de depuración muy poderosa, ya que se le informa de todas las plantillas incluidas, variables asignadas y variables de archivo de configuración para la plantilla actual. Con Smarty tu puedes modificar el formato de la consola de debug, para así encontrar las cosas que tu consideres mas importantes a debugar. Y, como añadido, puedes volcar el resultado de ese debug a una pagina usando una función que incorpora Smarty en el uso de sus plantillas.

PLUGINS

Una caracteristica muy importante para un desarollador de software es la posibilidad de reutilizar su codigo. Esto hace ahorrarnos tiempo, y sobretodo, en grandes empresas ahorrar una cantidad de dienro importante cuando nuevos proyectos empiezan y contienen funcionalidades que otros proyectos ya han realizado. Pero, reutilizar este codigo de una aplicación a otra diferente requiere de modificaciones de variables, nombres de funciones, un nuevo testeo y mucho cuidado con la migración a la nueva aplicación, pero esto siempre es mas rapido que hacer el codigo desde cero.

Pues bien, existe otra manera de reutilzar codigo : Los plugins.

Cuando empezamos a construir una nueva pagina web, identificamos funcionalidades que pueden ser usadas incluso en la misma pagina web, y de ahí nosotros creamos los plugins. De esta manera, despues de haber creado unas cuantas paginas webs, podriamos tener un portfolio de plugins que funcionan correctamente y pueden ser incluidas en otros proyectos sin necesidad de modificaciones, ahorrandonos mucho tiempo y carga de trabajo. Para hacer esto, necesitamos tener soporte de plug-in en el software que usamos para construir nuestro proyecto.

Smarty cuenta con una arquitectura de plugins que usadar por muchos por sus funcionalidades customizables. Con Smarty puedes crear plugins para funciones, compiladores, bloques, modificadores…Una gran cantidad de software con arquitectura de plug-ins carga todos los plug-ins antes de compilar.

Los diseñadores de Smarty tuvieron en cuenta el rendimiento e hicieron que los complementos se cargaran solo cuando se invocan en una plantilla. Más que eso, un complemento invocado una vez en una plantilla solo se carga una vez, incluso si hay más instancias de Smarty solicitando el mismo complemento.
Por ejemplo, cuando creamos una web de comercio electrónico, podemos crear complementos para la funcionalidad del carrito de la compra o filtros para la conversión de moneda que podemos usar más adelante en otros proyectos de comercio electrónico, sin tener que escribir el mismo código de cero otra vez, ahorrandonos tiempo y dinero.

FILTROS

Los diseñadores mas disciplinados puede que escriban muchos comentarios en sus templates, dando esto como resultado a un gran archivo despues de la compilacion. Los desarrolladores de Smarty pensaron en esto e incluyeron un set de filtros para resolver este problema.

Smarty cuenta con pre-filtros, que son principalmente funciones en PHP que los templates utilizan antes de compilar. Con estos pre-filtros podemos modificar cualquier aspecto en el template antes de la compilacion. Por ejemplo, si nosotros quisieramos eliminar todos los comentarios podriamos hacerlo con un pre-filtro. Por otro lado, si nosotros quisieramos añadir mas comentarios a los templates ya compilados podriamos hacerlo con post-filters. Los post-filters de Smarty tambien son principalmente funciones de PHP que utilizan los templates despues de ser compilados.

También podemos filtrar el contenido de una plantilla usando filtros de salida, que son funciones de PHP que se usan para filtrar la salida de una plantilla cuando se ejecuta, por ejemplo, para reemplazar palabras prohibidas con *, ocultando direcciones de correo electrónico, y así sucesivamente. Con estos potentes filtros, el programador tiene control total sobre las plantillas.