ARQUITECTURA DE PLANTILLAS EN LA VERSIÓN 1.5
Para Joomla! 1.5 queríamos separar completamente el código de la salida. Un diseñador de plantillas no debería estar limitado a las posibilidades programadas en el núcleo, debería poder sustituir todo el html generado por los módulos y componentes para adecuarlo a sus necesidades.
Para permitir esto Joomla! 1.5 dispone de una solución llamada ‘
vista de plantilla’ mediante un patrón
Modelo-Vista-Controlador o MVC. La incorporación de este patrón es parte del nuevo entorno de trabajo de Joomla!. Los componentes y módulos desarrollados con esta nueva
API (Interfaz de Programación de Aplicaciones) pueden ser sustituidos de manera automática por los diseñadores de plantillas.
La arquitectura de Joomla! 1.5 diferencia dos tipos de plantillas: plantillas de sitio y plantillas de extensión. Un plantilla de sitio define el aspecto y manejo de su sitio web, mientras que una plantilla de extensión define cómo se representa un determinado componente o módulo. Las plantillas de sitio pueden anular a las plantillas de extensión.
Antes de empezar a construir un primer ejemplo
práctico de una plantilla 1.5, creo que es importante explicar el planteamiento de la “vista de plantilla” con más detalle. La siguiente sección puede que sea algo técnica, intente seguirme. Espero que le permita entender mejor las plantillas, motores de plantillas y por qué en Joomla! 1.5 las cosas son como son.
VISTAS DE PLANTILLA
Una vista de plantilla utiliza una plantilla para ejecutar la parte Vista del patrón Modelo-Vista-Controlador. Una plantilla es un documento típicamente HTML con marcadores incrustados que son sustituidos, manipulados o evaluados mediante un motor API de plantilla para producir un documento de salida. El propósito de una plantilla es aislar el HTML del código del lenguaje de programación en una aplicación web. Hay varias razones para tal separación.
El Diseño HTML y la Programación de Aplicaciones son distintas funciones dentro de un equipo de desarrollo de aplicaciones web, representadas a menudo por personas diferentes y en diferentes momentos. Separar el HTML del código proporciona a cada persona su propio fichero sobre el que trabajar.
Cuando se diseñó el HTML, no se pretendía que fuera editado directamente. Separar el HTML del código de programación permite al gran grupo de editores WYSIWYG HTML ser usados para editar documentos de plantilla.
El simple hecho de separar el HTML del código de programación supone un gran avance hacia el aislamiento de la capa de presentación de una aplicación. Sin embargo, la
lógica de presentación complica este aislamiento. La lógica de presentación consiste en requerimientos como “Mostrar el elemento activo del menú en rojo”.
Una decisión de diseño clave cuando se usa la Vista de Plantilla es cómo manejar la lógica de presentación. El HTML no se diseñó de manera específica para ser capaz de trabajar con lógica arbitraria (
Principio de la Mínima Potencia). Para poder trabajar con lógica de presentación arbitraria, se debe extender el HTML o situar la lógica dentro del programa.
Aquí es donde hacen su aparición los motores de plantilla…
MOTORES DE PLANTILLA
Los motores de plantillas se diseñaron para permitir separar la parte lógica de la presentación de los datos. Los motores de plantilla resuelven dos grandes problemas: cómo conseguir esta separación y cómo separar código PHP “complejo” del HTML. En teoría, esto permite que los diseñadores HTML sin experiencia en PHP puedan modificar el aspecto del sitio sin tener que mirar el código PHP para nada.
Los motores de plantilla introducen un nuevo nivel de procesamiento. Los archivos de plantilla no sólo tienen que estar presentes, sino que también deben ser procesados (dependiendo del sistema de plantillas, esto ocurre de distintas formas: expresiones regulares, str_replaces, compilando, etc.). Esta es la razón por la cual han aparecido las pruebas de rendimiento de plantillas. Dado que los motores de plantilla emplean diversos métodos de procesado, algunas son más rápidas y otras más lentas.
Así que, básicamente, lo que tenemos ahora es un lenguaje interpretado (PHP) escrito en C usado para la parte lógica. Dentro del código PHP, todavía hay otro lenguaje pseudointerpretado para realizar la lógica de presentación. Algunos motores de plantilla permiten simplemente interpolación de variables y bucles; otros ofrecen condicionales y bucles anidados; algunos incluso una interfaz hacia casi todas las posibilidades de PHP.
Aunque patTemplate permite una separación estricta entre la lógica estructural y la de presentación, todavía existen algunos problemas. Básicamente, se limita a proporcionar un interfaz para PHP con nueva sintaxis. Dicho así, parece una tontería. ¿Es realmente más sencillo escribir < pattemplate :tmpl name="row" loop="10"> … que < ? foreach($rows as $row) ... ?> ? Pensamos que no.
Para Joomla! 1.5 somos partidarios de usar código PHP como lenguaje de plantillas de elección para la lógica de presentación. No creemos que el código PHP que un diseñador necesita aprender para crear su lógica de presentación será más complejo que aprender la sintaxis de un motor de plantilla.
¿DÓNDE DEJA ESTO A PATTEMPLATE ?
patTemplate se eligió
originalmente por su
consistencia, flexibilidad y sintaxis declarativa xml. Se puede encontrar más información en su viejo hilo de los foros de Mambo.
El problema con patTemplate es su rendimiento. No ofrece un mecanismo de compilación decente. Lo habíamos incorporado originalmente en Mambo 4.5.3 y las pruebas de rendimiento mostraron un tremendo incremento en la carga de las páginas. El principal problema de patTemplate es que no puede compilar plantillas en código PHP como, por ejemplo, puede hacer Smarty, lo cual significa que una plantilla necesita ser procesada y representada cada vez que se solicita una página.
Como resultado, hemos decidido no usar nunca más patTemplate en el núcleo. La biblioteca patTemplate todavía se incluye en el entorno de trabajo de Joomla! 1.5 por razones de compatibilidad hacia atrás, pero no la consideramos una opción de futuro.
Próximamente : ‘Cómo Construir una Plantilla de Sitio en Joomla! 1.5′
_____________
Texto Original: 'Templates in Joomla! 1.5 - Part 1', por
Johan Janssens (Blog del Desarrollador de Joomla!)