Esquemas en Earwyn

Esta semana estamos trabajando duro en la integración del nuevo diseño de Somflee, poniendo a prueba Earwyn, nuestro framework php en el que hemos basado su desarrollo. En un CMS que te dé todo hecho, es complicado llegar a tener una buena flexibilidad, manteniendo la filosofía de no cargar nada a mano. Es decir, por ejemplo, si en WordPress necesitamos una cabecera diferente (otro diseño, otra estructura, otro contenido) para dos secciones… podremos hacer un plugin, o podremos tocar el código php y mediante la comprobación de en qué sección estamos, mostrar una cosa u otra, pero cargando siempre el fichero header.php.

En nuestro caso, el nuevo diseño contempla 3 tipos de páginas diferentes: la portada (home), las páginas públicas y las páginas privadas. Cada uno de esos 3 grupos tiene su propia estructura, incluyendo capas y estilos ajenos al resto. Earwyn, en su versión anterior, era capaz de cargar de forma automática un estilo asociado al tema visual (theme) activo y un estilo adicional, si existía, asociado al módulo cargado. Aún así, el sistema se quedaba corto, pues no solucionaba el problema de forma eficiente: tener las tres estructuras definidas en el mismo .css podía ser algo caótico, y tenerlo en los estilos del módulo, si varios módulos tenían el mismo tipo de página, habría que repetir los estilos en cada .css.

Para dotar de más flexibilidad a Earwyn, dimos vueltas a lo que antes llamábamos “plantilla base“. Una plantilla base no es otra cosa que una plantilla xhtml, en la que definimos las capas principales del sitio (por ejemplo, cabecera, pie de página, barra de menú lateral, cuerpo…). ¿Y si pudiéramos tener varias plantillas base? Habíamos planteado la pregunta hace algún tiempo, pero hasta estos días no lo hemos dejado completamente operativo.

Sistema de Esquemas o “Schemas“. Con este nuevo nombre identificamos ahora a cada una de esas plantillas base existentes. Volviendo a tocar el núcleo, donde se cargan los archivos de estilos, añadimos la inclusión automática de estilos asociados a Schemas, de tal manera que si en la carpeta de estilos existe un fichero .css con cierta nomenclatura (por ejemplo, base_public.css, si public es el nombre del Schema), Earwyn lo cargará. Además, debido a que un Schema puede necesitar su propia cabecera o pie, el framework incluye, si existen, los estilos (en el caso supuesto, header_public.css y footer_public.css) y plantillas (header_public.html y footer_public.html) en relación. En caso contrario, siempre se tenderá al esquema por defecto, cargando también sus ficheros relacionados. Por último, en el archivo de configuración de módulos, se puede especificar qué Schema seguirá cada uno de ellos, si es diferente al default.

Con todo esto, hemos dado un paso interesante: mayor potencia, mejor gestión del código CSS…. Sin duda el factor más importante, es que nos resulta muy cómodo y práctico. Paralelamente a esta funcionalidad, hemos implementado una mejora en el sistema de idiomas, de tal forma que ahora también se permite la inclusión de un fichero de idioma (donde se definen las variables con los literales del idioma en uso) por cada módulo. Earwyn improved!

Artículos recientes relacionados:


Votar

7 Comentarios “Esquemas en Earwyn”

  1. Bitacoras.com publicó:

    Información Bitacoras.com…

    Valora en Bitacoras.com: Esta semana estamos trabajando duro en la integración del nuevo diseño de Somflee, poniendo a prueba Earwyn, nuestro framework php en el que hemos basado su desarrollo. En un CMS que te dé todo hecho, es complicado llegar a t…..

  2. josepzin publicó:

    Muy interesante toda esa paranoia sobre las plantillas y estilos :O

  3. Demiurgo publicó:

    ya se que me salgo un poco del tema pero viendo la complejidad que van añadiendo al framework, ¿cómo van los tiempos de carga, cuánto suele ~tardar en generar una página?

  4. SiPoX publicó:

    @josepzin… nunca mejor dicho, es algo paranoia.. pero.. tan útil… :D :D

    @Demiurgo… pues la verdad es algo que me está sorprendiendo bastante… pues es rápido a la hora de cargar y demás, siendo la navegación por las páginas muy fluida (al menos en el presente servidor). Lo último que hemos hecho, tampoco tiene mucho a nivel de código, varias comprobaciones, alguna variable extra y poco más, todo el sistema que interpreta las plantillas sigue estable. :P

    Un saludo! ;) :P

  5. josepzin publicó:

    Un tema recurrente es ¿vale la pena todo ese desarrollo o quizas conviene aprenderse todos los secretos de un Joomla o Drupal?

    Lo digo porque yo tambien prefiero tener mi propio CMS usando como base CodeIgniter, pero a veces me pica la duda…

  6. SiPoX publicó:

    Hum.. bueno.. imagino que depende de muchas cosas. En nuestro caso, Earwyn surgió cuando éramos un grupo amateur y nos podíamos permitir trastear. Además, fue a raíz de un proyecto que tuve que hacer para otro trabajo… total, que modificando, cambiando la orientación, probando…. teníamos un sistema potente que decidimos dejar como herramienta interna.

    Si hubiéramos tenido que elegir algo desde cero, siendo ya empresa, hubiésemos optado por algo así como el Cake PHP, CodeIgniter o similares. Earwyn tiene partes de CMS, pero tiene más partes de un framework de desarrollo. A día de hoy, la verdad es que es imprescindible para nosotros. ;) :P

    Joomla y drupal pueden extenderse bastante y tal, pero dependiendo de las funcionalidades de las que quieras dotar a tu proyecto, se pueden quedar algo cortas… o tener que tocarlo tanto que no merezca la pena. Si es algo genérico, totalmente, creo que hay que tirar por CMS ya estables, es muy productivo. Si es algo concreto, hay que plantear si se puede realizar con alguno de ellos o si hace falta un desarrollo ajeno, y en tal caso, estudiar en qué framework basar su desarrollo. :P

  7. Piro publicó:

    Pedazo bombón esa Earwyn :P

    Yo estos dias toy terminando una web (entre discos duros que se mueren y copias de seguridad que se me olvidan de hacer) y mejorando de paso a Nodoka (es el miniframework mvc con modulos de cms que monté en el skill), aunque habiendo modificado ya un 80% del codigo base se podría decir que mas bien la estoy rehaciendo.

    En cuanto a la presentación lo que le estoy implementando es algo similar, tiene una serie de masterviews que generan y formatean el esquema general, y luego miniviews que muestran el contenido generado dentro de la master según a que acción hayamos llamado.

    @Josepzin: Codeigniter == <3

Responder