sábado, 16 de mayo de 2009

Maquetación con smarty

Estos últimos días he estado realizando un proyecto en el que he estado maquetando una página web previamente codificada en php con smarty. Debíamos actualizar la página del año pasado a la de este año y cambiar alguna de las funcionalidades de la misma. Yo había utilizado php muchas veces pero smarty lo había utilizado simplemente una vez y al final decidimos evitarlo ya que era más costoso maquetar el proyecto en smarty que hacerlo en php. Además en aquella ocasión no pensábamos reutilizarlo después.

Este proyecto está pensado para poder ser utilizado más adelante, por lo que el uso de smarty sí está justificado. Smarty, para el que no lo conozca es un motor de plantillas para php. De este modo se separa la parte funcional de nuestro sistema web de la parte de presentación. Eso fue un factor a favor para mí, ya que solo tenía que modificar las plantillas. Las plantillas de smarty suelen tener la extensión .tpl.

Cuando recibí la página web me encontré con una estructura bastante común. En el directorio raíz un main.php, config.php y un index.php. El index llamaba al main y el config era un fichero para configurar el servidor, la contraseña de acceso a la base de datos y alguna que otra cosa más. También me encontré con varias carpetas images, install, lib, modules, themes y upgrade. Más tarde comprobaría que solo utilizaría modules y themes, además de images, donde cambié alguna de las imágenes.

En la carpeta themes tenemos distintas plantillas para mostrar la página global. Estas plantillas controlan el aspecto de las pantallas típicas de nuestro sistema. Dentro me pude encontrar themes como ajaxian, carbon, classic, floatrix, etc. En nuestro caso descubrí que se usaba la plantilla matrix.

En la carpeta modules, tenemos los distintos módulos de cada una de esas páginas. También son presentación, pero a nivel mucho más bajo.

En realidad los cambios que tenía que hacer en la página eran cambios concretos, pero tenía que encontrar dónde estaba el código que tenía que tocar, y lo hallé a la vieja usanza, es decir, realizando una búsqueda de ciertos comentarios que aparecían en el código. Con la búsqueda de Windows se pueden realizar búsquedas de palabras, pero para frases es más complicado, por lo que me decidí a usar directamente el notepad++ para encontrarlo. Una vez encontrado el código es muy sencillo. Tenemos {foreach}{/foreach}, {if}{else}{/if}. Una vez encontrado el código donde tenía que tocar simplemente reutilicé otras funciones y trozos de código de otros sitios para completar la maquetación.

Comprobé que en la carpeta modules, tenía muchos apartados referentes a funcionalidades del código. Dentro de cada apartado tenía otros apartados y el que me interesaba era templates. Dentro de este último si quería modificar algo, debía crear una carpeta local, y en ella hacer una copia de la plantilla. El código automáticamente utiliza la plantilla que hay en local en vez de en el directorio superior. De este modo siempre se tiene una copia de la plantilla inicial.

Una vez finalizada la maquetación he comprobado que utilizar smarty sí es eficaz, ya que sin tocar el código funcional que alguien había creado, he modificado toda la parte de presentación en poco tiempo. Hay que tener cuidado de no utilizarlo en proyectos que no vayan a ser reutilizables porque sería una pérdida de tiempo, pero en proyectos como el que me he refierido en este artículo, es un ahorro de tiempo considerable.

2 comentarios:

Anónimo dijo...

Un compañero me ha señalado tu blog, y me parece muy interesante.

Lastima que no pueda suscribirme!

Soy programador freelance y llevo dos años desarrollando un engine para MMORPG, hace poco he iniciado un blog, a modo de divagaciones teoricas sobre mi sistema. Puede que te interese!

http://mraproject.blogspot.com

Unknown dijo...

LINDO POST!!!..
También utilizo Smarty como herramienta para separar presentación y lógica programando con PHP y usando el patrón MVC (Model View Controller)...la verdad es muy util, lástima que NetBeans no soporte el coloreado de los archivos templates (.tpl)...estoy viendo si agregando un archivo xml puedo hacer que me lo reconozca el notepad..

Salu2 desde Montevideo, Uruguay...