Wordpress Themes

Nuevas funcionalidades

Esta semana y siguiendo con lo planeado en el último UC Meeting, hemos hecho importantes avances, tanto en el framework Earwyn como en el juego WoD. Aunque no traemos capturas (a espera de rematar el diseño del primer theme oficial), presentamos el listado de aquello que ya ha quedado implementado.

Earwyn

  • Seguridad integrada en el núcleo. Hasta ahora la seguridad se comprobaba en un script ajeno al framework, incluido en las páginas en las que era necesaria la seguridad. Ahora, está integrada como parte de la clase que gestiona la carga de módulos, comprobando los permisos del usuario para cada módulo antes de su carga.
  • Sistema de subplantillas mejorado. Varias mejoras en la estructuración y en el código, hacen posible definir ilimitadas subplantillas dentro de una plantilla. Además, se ha potenciado su uso no sólo para listados, sino para mostrar o no mostrar partes de la página en función de lo que sea conveniente. Un ejemplo de esto puede verse en el foro de cplabs.
  • Sistema de Log. Una nueva clase da soporte al sistema de log, que permite registrar todo lo que vaya pasando en el sistema… o vayan haciendo los usuarios. En el juego da soporte al sistema de alertas, comentado abajo.
  • Sistema de tiempo. Aunque ya estaba creado, la mejora en el sistema ha sido importante. Fechas, conversiones y un sistema de calendario.
  • Mejoras en varias librerías: nuevas funciones en el sistema de ficheros (como la subida, borrado…), en la clase principal de Earwyn, en el sistema multi - lenguaje…

WoD

  • Sistema de alertas. La IA del juego avisa al usuario a través de un mensaje de aquello que no está marchando bien en su equipo. Moral baja de los jugadores, ausencia de capitán, consejos varios… así de lo que va haciendo en su gestión.
  • Panel de control. Va tomando forma… están sentadas las bases para la completa gestión y personalización de la cuenta, así como el perfil que se mostrará a los demás usuarios. (Cambio de avatar, modificación de datos personales, elección del theme visual…)
  • Mensajería privada. Los mensajes privados entre usuarios, ya se encuentran operativos.

Complementando a la parte operativa, vamos definiendo y atando cada detalle del funcionamiento del juego (reglas, normas, ajustes en la inteligencia artificial…). El 25 se va acercando….

Definiendo subplantillas en Earwyn

La semana pasada publicábamos un post sobre el sistema de plantillas de Earwyn, en el que se comentaba la necesidad de crear plantillas adicionales para definir elementos repetitivos dentro de la misma plantilla. En estos días, este tema ha quedado solventado.

Subplantillas

La forma de solucionarlo ha sido ampliando el parser de plantillas, reconociendo ahora la parte de código perteneciente a una subplantilla definida dentro de la propia plantilla. Es decir, existe una plantilla llamada list.html, ésta podrá contener tanto el código general de la lista como el código que dará formato a cada elemento de la lista, sin necesidad de tener este código aparte en otra plantilla, como se hacía en la anterior versión.

En una misma plantilla se pueden definir ilimitadas subplantillas, asignándolas un nombre. Por ejemplo:

<ul >
[st:list_item]< li class=”mi_clase”>¿elem?</li>[/st]
< /ul>

En el código php del módulo que tiene asociado la plantilla que aloja el código de ejemplo, podríamos cargar la subplantilla con un método, tal que

$wod_engine->set_subtpl(”list_item”);

Y utilizar la subplantilla como si se hubiera definido una plantilla normal, reemplazando el tag y lo presente dentro de él de forma análoga a las variables calculadas:

$wod_engine->add_subtpl(”list_item”, $listado);

De este modo, nos ahorramos todas las plantillas .html que pertenecían a filas de tablas, elementos de listas… ganando mucho en organización tanto de ficheros como de funcionamiento.

Resumiendo

La forma básica del uso de todo esto, sería algo como:

  • Definir cual será la plantilla general que el módulo lleva asociada. (set_template)
  • Calcular el contenido de cada subplantilla en ella (set_subtpl y add_subtpl)
  • Calcular el contenido de la plantilla general
  • Obtener el código xhtml de todo el conjunto (get_xhtml)

Y algo más

En el post anterior, no comentamos que desde las plantillas también es posible llamar a funciones php, encerrándolas entre los símbolos []. Así en muchas ocasiones podemos ahorrar definir y calcular variables mediante ¿? y mostrar el contenido deseado directamente.

El sistema de plantillas de Earwyn

En varias ocasiones hemos comentado cosillas sobre el sistema de plantillas de Earwyn, pero no hemos entrado en detalles acerca de su funcionamiento. Este post dará algunas ideas de cómo está realizada su implementación y de la gran utilidad que puede llegar a tener.

Leyendo

Para mostrar el contenido de una página desde Earwyn, en el módulo apropiado se carga la plantilla que se desea utilizar. Por ejemplo,

$wod_engine->set_template(”my_template”);

El sistema buscará el fichero my_template.html, dentro de la carpeta de plantillas del theme (tema) activo. Leerá su contenido, identificando símbolos y tags. Después de esta instrucción, podremos agregar valores a las variables dinámicas presentes en la plantilla, encerradas entre signos de interrogación.

$wod_engine->add_value(”my_variable”, “valor de la variable”);

Por ejemplo, aquí reemplazaremos la cadena ¿my_variable? presente en la plantilla xhtml por la cadena “valor de la variable“, una vez llamemos al método que obtiene el código final:

$texto_a_mostrar = $wod_engine->get_xhtml();

Símbolos

Además de variables calculadas en el módulo php, en las plantillas también pueden mostrarse otra serie de datos:

  • Literales: puesto que el framework tiene soporte multi - idioma, también debe poder aplicarse en el contenido xhtml. Entre símbolos de exclamación, se indicará el nombre asociado a la cadena a traducir, presente en un fichero de lenguaje (uno por idioma).
  • Campos: de forma directa, se puede obtener el valor para un determinado campo. Las cadenas entre corchetes indican el nombre del campo… pero también es posible mostrar campos de otras tablas relacionadas con la actual, como por ejemplo las asociadas a través de una clave ajena.
  • Variables predefinidas: existen una serie de variables que el sistema interpreta de forma automática, sin necesidad de ser añadidas a través del método add_value. Por ejemplo, Earwyn reconoce valores pasados a través del método GET / POST en URLs y/o formularios, datos de acceso global como el session_id generado por php, cookies generadas…

Ventajas

Esta forma de plantear el desarrollo nos ofrece un par de ventajas básicas:

  • Organización: el código de los módulos es mucho más sencillo de leer y de modificar. Lo mismo pasa con el código de las plantillas, al no estar mezclado, se ahorra mucho tiempo a la hora de actualizar. Y, en general, se mejora la estructura de la aplicación web. Por otro lado, mejora la coordinación entre programadores / diseñadores, pues el diseño se podrá cambiar de forma radical sin tocar código php.
  • Flexibilidad: el sistema es flexible. Con poco esfuerzo, se puede adaptar a nuestro gusto. El diseño por orientado a objetos permite crear nuevos métodos, nuevas clases dependientes y ampliar a las funcionalidades que deseemos, manteniendo el orden e integridad de la aplicación. Y, al mismo tiempo, tiene la comodidad de un framework.

Desventajas

La principal desventaja radica en el supuesto de que en una misma página, se tengan muchos elementos repetitivos, para los que haga falta definir un patrón en otra plantilla. Por ejemplo, los listados. Por un lado estaría la plantilla general de la página y por otro, la plantilla que da formato a cada list item de la lista. Esto supone una pequeña molestia de andar creando plantillas muy simples… pero es de sobra compensado por las ventajas. De todas formas, andamos dando alguna vuelta a cómo mejorar el comportamiento de Earwyn en estos casos. :P

Código

Una pequeña captura de una parte del código de una plantilla xhtml..

Código Plantillas Earwyn

Themes en Earwyn / WoD

Ayer publicábamos un pequeño avance sobre Earwyn, en el foro de cplabs, que se puede seguir en este enlace. En el post se enlazan con un par de capturas referentes a los themes del juego, que Earwyn controla y gestiona a través de su sistema de temas. ¿Cómo funciona?

La potencia del sistema radica en el sistema de plantillas, implementado a través de una clase llamada EWN_Template y encargado de interpretar los tags dentro de los ficheros .html. Los themes están dividos en directorios y tienen asociado una hoja de estilos CSS2, que da formato visual al diseño de cada uno. Al cargar cada página, Earwyn sabe qué conjunto de plantillas leer (es decir, de qué directorio) en función de lo que tenga definido el usuario o el theme por defecto si el usuario no está logeado.

Puesto que todo el código xhtml está desligado de la generación de datos a través de php, no sólo puede cambiar el estilo visual, sino que también es posible mostrarlo en otro lugar diferente o mostrar en cada plantilla unos datos u otros, resultando un sistema muy flexible.

Plantilla Theme Pruebas Theme Red Alert Alpha

En la primera captura, el theme activo es el de pruebas. El segundo, el theme red alert en alpha. Una de nuestras ideas es que los usuarios del juego puedan participar de forma activa y cargar sus propios themes, personalizando totalmente su visión del juego. :P Aunque quizá eso no esté en la fase beta…. ;)

Earwyn y WoD

Powered by EarwynEn algunos post anteriores referentes a nuestro juego web, comentamos que éste estaba en fase de reestructuración total, aislando una parte más génerica de aquello que conforma el juego en sí. Esa parte genérica ya va tomando una estructura definida y estable, evolucionando en un framework PHP llamado Earwyn, especialmente enfocado al desarrollo de juegos web, pero utilizable sin complicación alguna en cualquier otro tipo de sitio online. Con un diseño totalmente en POO y programado bajo php 5.2, hereda conceptos de Stormie y Julie (un constructor de páginas parecido al que mueve blogspot), añadiendo varias mejoras de implementación y funcionalidad. Además, incorpora diversas funciones javascript, con un motor propio de AJAX, complementado por las librerías Prototype (y su add on script.aculo.us) y jQuery.

Entre sus principales características:

  • Temas: cada usuario tiene la posibilidad de ver la aplicación bajo un tema (o theme) determinado. No sólo cambiarán los colores, tonos o imágenes de la página, sino que también lo hará la disposición / ubicación de elementos en pantalla. En un próximo post, pondremos unas capturas acerca de esto…
  • Usuarios: se controlan los usuarios activos, los logeados en el sistema, los baneados, los que no han validado su cuenta, los que son admins…. Cada usuario tiene un perfil concreto y se monitorizan sus acciones, como parte de la seguridad de la aplicación….
  • Plantillas: todo el código php es independiente del código xhtml. Es decir, hay una independencia total entre datos y diseño, ganando en organización y permitiendo el funcionamiento del sistema de temas comentado en el primer punto.
  • Menús: el framework es capaz de definir una serie de menús, que son llamados en la plantilla principal, interpretando si el menú ha de mostrarse para cada usuario, en función de su perfil, de si ha hecho login….
  • Módulos: la aplicación se estructura en módulos. Así, se pueden añadir tantos módulos adicionales como el juego final requiera….
  • Imágenes: escala imágenes, genera los tags xhtml de forma automática….
  • Ficheros: lee / escribe ficheros, soportando .txt y .xml
  • Cadenas: interpreta bbcode, formatea fechas, números y strings
  • Multi - Idioma: soporta ilimitados idiomas, que pueden convivir en el mismo servidor…. o teniendo cada versión en servidores diferentes.

Aún queda bastante para tener una versión completa 1.0 del framework, pero ya va adquiriendo mucha funcionalidad, que se va notando en el desarrollo de WoD. Estos días venimos trabajando a un ritmo estupendo… y la idea de presentar la versión beta (y abierta al juego) en la campus party toma fuerza….

Seguiremos informando….