<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Undead Code: Internet, web 2.0, videojuegos y software &#187; Earwyn</title>
	<atom:link href="http://www.undeadcode.com/category/proyectos/earwyn/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.undeadcode.com</link>
	<description>Blog tecnológico Undead Code: web 2.0, desarrollo, internet, videojuegos, programación, proyectos...</description>
	<lastBuildDate>Mon, 06 Sep 2010 10:44:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Esquemas en Earwyn</title>
		<link>http://www.undeadcode.com/proyectos/esquemas-en-earwyn/</link>
		<comments>http://www.undeadcode.com/proyectos/esquemas-en-earwyn/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 09:11:42 +0000</pubDate>
		<dc:creator>Eduardo Millán</dc:creator>
				<category><![CDATA[Earwyn]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Somflee]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[esquemas]]></category>
		<category><![CDATA[estilos]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plantillas]]></category>
		<category><![CDATA[programación web]]></category>

		<guid isPermaLink="false">http://www.undeadcode.com/?p=627</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Esta semana estamos trabajando duro en la integración del nuevo diseño de <a title="Somflee: Gestor Social de Filmotecas Digitales" href="http://www.somflee.com">Somflee</a>, poniendo a prueba <strong><em>Earwyn</em></strong>, nuestro <strong><em>framework php</em></strong> en el que hemos basado su desarrollo. En un <em>CMS</em> 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 <a title="WordPress" href="http://www.wordpress.org">WordPress</a> necesitamos una cabecera diferente (otro diseño, otra estructura, otro contenido) para dos secciones&#8230; podremos hacer un <em>plugin</em>, o podremos tocar el código <em>php</em> y mediante la comprobación de en qué sección estamos, mostrar una cosa u otra, pero cargando siempre el fichero <em>header.php</em>.</p>
<p>En nuestro caso, el nuevo diseño contempla 3 tipos de páginas diferentes: la portada (<em>home</em>), las páginas públicas y las páginas privadas. Cada uno de esos 3 grupos tiene su propia <strong>estructura</strong>, incluyendo capas y estilos ajenos al resto. <em>Earwyn</em>, en su versión anterior, era capaz de cargar de forma automática un estilo asociado al tema visual (<em>theme</em>) 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 <em>.css</em> 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 <em>.css</em>.</p>
<p>Para dotar de más flexibilidad a <em>Earwyn</em>, dimos vueltas a lo que antes llamábamos &#8220;<em>plantilla base</em>&#8220;. Una <em>plantilla base</em> no es otra cosa que una <em>plantilla xhtml</em>, en la que definimos las capas principales del sitio (por ejemplo, cabecera, pie de página, barra de menú lateral, cuerpo&#8230;). ¿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.</p>
<p><strong>Sistema de Esquemas o &#8220;<em>Schemas</em>&#8220;.</strong> Con este nuevo nombre identificamos ahora a cada una de esas <em>plantillas base</em> 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 <em>Schemas</em>, de tal manera que si en la carpeta de estilos existe un fichero <em>.css</em> con cierta nomenclatura (por ejemplo, <em>base_public.css</em>, si <em>public</em> es el nombre del <em>Schema</em>), <em>Earwyn</em> lo cargará. Además, debido a que un <em>Schema</em> puede necesitar su propia cabecera o pie, el <em>framework</em> incluye, si existen, los <strong>estilos</strong> (en el caso supuesto, <em>header_public.css</em> y <em>footer_public.css</em>) y <strong>plantillas</strong> (<em>header_public.html</em> y <em>footer_public.html</em>) 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 <strong>módulos</strong>, se puede especificar qué <em>Schema</em> seguirá cada uno de ellos, si es diferente al <em>default</em>.</p>
<p>Con todo esto, hemos dado un paso interesante: mayor potencia, mejor gestión del código <em>CSS</em>&#8230;. Sin duda el factor más importante, es que nos resulta muy <strong>cómodo</strong> y <strong>práctico</strong>. Paralelamente a esta funcionalidad, hemos implementado una mejora en el <strong>sistema de idiomas</strong>, 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. <em>Earwyn improved!</em></p>

<p><strong>Artículos recientes relacionados:</strong></p>
<ul>
<li><a href="http://www.undeadcode.com/proyectos/encarando-un-verano-muy-intenso/">Encarando un verano muy intenso</a></li>
<li><a href="http://www.undeadcode.com/proyectos/crystal-reversi-ya-disponible-en-la-appstore/">Crystal Reversi, ya disponible en la AppStore</a></li>
<li><a href="http://www.undeadcode.com/proyectos/postmortem-tinted-turns-iphone/">Postmortem: Tinted Turns (iPhone)</a></li>
<li><a href="http://www.undeadcode.com/proyectos/independizando-somflee/">Independizando Somflee</a></li>
<li><a href="http://www.undeadcode.com/proyectos/cerrando-un-proyecto-tinted-turns/">Cerrando un proyecto: Tinted Turns</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://www.undeadcode.com/proyectos/esquemas-en-earwyn/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>El sistema multi &#8211; idioma de Earwyn / WoD</title>
		<link>http://www.undeadcode.com/proyectos/el-sistema-multi-idioma-de-earwyn-wod/</link>
		<comments>http://www.undeadcode.com/proyectos/el-sistema-multi-idioma-de-earwyn-wod/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 11:18:15 +0000</pubDate>
		<dc:creator>Eduardo Millán</dc:creator>
				<category><![CDATA[Earwyn]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Win or Defeat]]></category>

		<guid isPermaLink="false">http://www.undeadcode.com/?p=387</guid>
		<description><![CDATA[En la mayoría de aplicaciones, incluidas las basadas en entorno web, los detalles pueden complicar mucho el desarrollo / implementación de un proyecto. Cuanto más refinados están, más dificultades o trabas van apareciendo. E incluso algunas de ellas, se tornan insalvables. El sistema multi &#8211; idioma de Earwyn, que da soporte a Win or Defeat, [...]]]></description>
			<content:encoded><![CDATA[<p>En la mayoría de aplicaciones, incluidas las basadas en entorno web, los detalles pueden complicar mucho el desarrollo / implementación de un proyecto. Cuanto más refinados están, más dificultades o trabas van apareciendo. E incluso algunas de ellas, se tornan insalvables. El sistema <strong>multi &#8211; idioma</strong> de <a title="Earwyn: Framework PHP" href="http://earwyn.undeadcode.com">Earwyn</a>, que da soporte a <a title="Win or Defeat: Juego web multijugador" href="http://www.winordefeat.com">Win or Defeat</a>, es capaz de manejar un número ilimitado de idiomas conviviendo en el mismo servidor (o en diferentes, si se necesita), haciendo uso de base de datos, ficheros <em>php</em>, ficheros de texto&#8230;, pero para llegar a la versión actual, hubo que resolver varios problemas y optar por algunas soluciones a ellos.</p>
<p>La parte más básica del sistema que permite el multi &#8211; idioma no supuso mucha complicación. El sistema de plantillas reconoce <strong><em>tags</em></strong> asociados a literales, definidos en ficheros <em>.php</em>, donde a través de variables se declaran la traducción para ese idioma. Es decir&#8230;</p>
<ul>
<li>Existe un fichero <strong><em>.php</em></strong> por cada idioma, llamado con el esquema <em>cod.php</em>, donde <span style="color: #000080;"><em>cod</em></span> es el código de idioma. <em>Earwyn</em> sabe qué fichero cargar según el idioma marcado por el usuario, haciendo un <em>include</em> de él.</li>
</ul>
<blockquote><p>$GLOBALS["TXT_MY_TEXT"]=&#8221;Este es mi texto, definido en sp.php&#8221;;</p></blockquote>
<ul>
<li>En la plantilla <strong><em>.html</em></strong> escribimos algo como:</li>
</ul>
<blockquote><p>&#8230;.&lt;body&gt;¡txt_my_text!&lt;/body&gt;&#8230;</p></blockquote>
<ul>
<li>Y cuando la plantilla se carga, el <em>framework</em> <strong>sustituye</strong> el <em>tag</em> marcado entre exclamaciones por su texto equivalente, definido en el fichero de idioma incluido.</li>
</ul>
<blockquote><p>&#8230;.&lt;body&gt;Este es mi texto, definido en sp.php&lt;/body&gt;&#8230;</p></blockquote>
<p>Todos los literales presentes en las plantillas, se traducen con este procedimiento. Pero un juego de idiomas también afecta a otros elementos, como literales más largos, mensajes y avisos del sistema, campos de la base de datos&#8230;. En muchas páginas, es corriente ver un formulario, en español, menos las opciones de un <em>select</em>, por ejemplo de países. Ese listado se genera a partir de leer una tabla, en la que se escribe el valor del campo en un idioma. Y no queda del todo bien leer todo en español menos ciertas partes. Para evitar este problema nuestra opción fue implementar un sistema de ficheros de texto asociado a los campos identificadores (<strong><em>id</em></strong>, campo clave), que tradujese en consecuencia. Es decir&#8230;</p>
<ul>
<li>La tabla de países tiene un campo <strong>id</strong>, un número entero, único para cada registro.</li>
<li>Existe una carpeta, que a su vez contiene subcarpetas, donde según la naturaleza del dato se guardan los ficheros de texto asociados. En el caso de países, la carpeta es <em><strong>countries</strong></em>.</li>
<li>En esa carpeta existen tantos ficheros como países haya en la base de datos, nombrados como <em>id.txt</em>, donde <strong><em>id</em></strong> es el valor del campo <span style="color: #000080;"><em>id</em></span> en la tabla. (<em>1.txt, 2.txt, 3.txt&#8230;</em>)</li>
<li>A través de <em>Earwyn</em>, cuando leemos la tabla y, por tanto, el <em>id</em>, <strong>leemos</strong> el fichero asociado, sacando el valor traducido para ese campo.</li>
</ul>
<p>Para la traducción de entidades de la base de datos, usamos este método, siendo aplicable también a otros elementos. Cuando necesitamos un nuevo tipo de mensaje o entidad a traducir, creamos la carpeta con los ficheros de texto y usando las funciones del framework somos capaces de tener cualquier contenido en multi &#8211; idioma. Sin embargo, para el informe del resultado de un partido, estamos refinando más aún el proceso, al tratarse de algo especial, que contaremos más adelante.</p>
<p>En cuanto al proceso de inclusión de un nuevo idioma, es muy cómodo; basta traducir esos ficheros e indicarlo en la configuración del sitio.</p>

<p><strong>Artículos recientes relacionados:</strong></p>
<ul>
<li><a href="http://www.undeadcode.com/proyectos/encarando-un-verano-muy-intenso/">Encarando un verano muy intenso</a></li>
<li><a href="http://www.undeadcode.com/proyectos/crystal-reversi-ya-disponible-en-la-appstore/">Crystal Reversi, ya disponible en la AppStore</a></li>
<li><a href="http://www.undeadcode.com/proyectos/postmortem-tinted-turns-iphone/">Postmortem: Tinted Turns (iPhone)</a></li>
<li><a href="http://www.undeadcode.com/proyectos/independizando-somflee/">Independizando Somflee</a></li>
<li><a href="http://www.undeadcode.com/proyectos/cerrando-un-proyecto-tinted-turns/">Cerrando un proyecto: Tinted Turns</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://www.undeadcode.com/proyectos/el-sistema-multi-idioma-de-earwyn-wod/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Avances y retrasos</title>
		<link>http://www.undeadcode.com/proyectos/avances-y-retrasos/</link>
		<comments>http://www.undeadcode.com/proyectos/avances-y-retrasos/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 11:50:47 +0000</pubDate>
		<dc:creator>Eduardo Millán</dc:creator>
				<category><![CDATA[Earwyn]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Win or Defeat]]></category>
		<category><![CDATA[earwyn undead code wod framework php]]></category>

		<guid isPermaLink="false">http://www.undeadcode.com/?p=53</guid>
		<description><![CDATA[Hoy era el día fijado para abrir la beta privada de nuestro juego web, WoD. No obstante, hemos tenido algunos retrasos de última hora con la maquetación de los datos (es decir, el juego está operativo pero visualmente no depurado) que harán que enviemos las invitaciones en unos días. Por otro lado, queda también pequeños [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy era el día fijado para abrir la beta privada de nuestro juego web, <strong>WoD</strong>. No obstante, hemos tenido algunos retrasos de última hora con la maquetación de los datos (es decir, el juego está operativo pero visualmente no depurado) que harán que enviemos las invitaciones en unos días. Por otro lado, queda también pequeños detalles y ajustes en la inteligencia artificial, que iremos refinando una vez se vayan generando partidos, fichajes&#8230; Y, como decían post anteriores, mucha funcionalidad en el tintero que implementaremos de forma progresiva, siendo Octubre el plazo fijado para la apertura pública.</p>
<p>En cuanto a los avances, esta semana <strong>Earwyn</strong> sufrió una importante mejora en su sistema de módulos y temas&#8230; siendo ahora capaz de soportar estilos adicionales para un módulo en concreto o para varios módulos. Además, permite tener una plantilla base diferente para ellos, con lo que dentro de un mismo sitio, con el mismo <em>theme</em>, puede dar lugar a diferentes diseños. (Esto es notable en el tema &#8220;<em>Military</em>&#8220;, donde la <em>home</em> y los módulos públicos son diferentes a los internos).</p>
<p>En breve&#8230; más noticias&#8230; <img src='http://www.undeadcode.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>

<p><strong>Artículos recientes relacionados:</strong></p>
<ul>
<li><a href="http://www.undeadcode.com/proyectos/encarando-un-verano-muy-intenso/">Encarando un verano muy intenso</a></li>
<li><a href="http://www.undeadcode.com/proyectos/crystal-reversi-ya-disponible-en-la-appstore/">Crystal Reversi, ya disponible en la AppStore</a></li>
<li><a href="http://www.undeadcode.com/proyectos/postmortem-tinted-turns-iphone/">Postmortem: Tinted Turns (iPhone)</a></li>
<li><a href="http://www.undeadcode.com/proyectos/independizando-somflee/">Independizando Somflee</a></li>
<li><a href="http://www.undeadcode.com/proyectos/cerrando-un-proyecto-tinted-turns/">Cerrando un proyecto: Tinted Turns</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://www.undeadcode.com/proyectos/avances-y-retrasos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuevas funcionalidades</title>
		<link>http://www.undeadcode.com/proyectos/wod/nuevas-funcionalidades/</link>
		<comments>http://www.undeadcode.com/proyectos/wod/nuevas-funcionalidades/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 21:18:38 +0000</pubDate>
		<dc:creator>Eduardo Millán</dc:creator>
				<category><![CDATA[Earwyn]]></category>
		<category><![CDATA[Win or Defeat]]></category>
		<category><![CDATA[earwyn framework undaed code php wod]]></category>

		<guid isPermaLink="false">http://www.undeadcode.com/?p=48</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Esta semana y siguiendo con lo planeado en el último <em>UC Meeting</em>, hemos hecho importantes avances, tanto en el <em>framework</em> <strong>Earwyn</strong> como en el juego <strong>WoD</strong>. 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.</p>
<h4>Earwyn</h4>
<ul>
<li><strong>Seguridad</strong> integrada en el núcleo. Hasta ahora la seguridad se comprobaba en un <em>script</em> ajeno al <em>framework</em>, 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.</li>
<li><strong>Sistema de subplantillas</strong> 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 <a title="CP Labs - Earwyn" href="http://www.cplabs.es/foros/viewtopic.php?f=35&amp;t=1946&amp;start=15" target="_blank">cplabs</a>.</li>
<li><strong>Sistema de Log</strong>. Una nueva clase da soporte al sistema de log, que permite registrar todo lo que vaya pasando en el sistema&#8230; o vayan haciendo los usuarios. En el juego da soporte al sistema de alertas, comentado abajo.</li>
<li><strong>Sistema de tiempo</strong>. Aunque ya estaba creado, la mejora en el sistema ha sido importante. Fechas, conversiones y un sistema de calendario.</li>
<li> <strong>Mejoras en varias librerías</strong>: nuevas funciones en el sistema de ficheros (como la subida, borrado&#8230;), en la clase principal de <em>Earwyn</em>, en el sistema multi &#8211; lenguaje&#8230;</li>
</ul>
<h4>WoD</h4>
<ul>
<li><strong>Sistema de alertas</strong>. 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&#8230; así de lo que va haciendo en su gestión.</li>
<li><strong>Panel de control</strong>. Va tomando forma&#8230; 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&#8230;)</li>
<li><strong>Mensajería privada</strong>. Los mensajes privados entre usuarios, ya se encuentran operativos.</li>
</ul>
<p>Complementando a la parte operativa, vamos definiendo y atando cada detalle del funcionamiento del juego (reglas, normas, ajustes en la inteligencia artificial&#8230;). El 25 se va acercando&#8230;.</p>

<p><strong>Artículos recientes relacionados:</strong></p>
<ul>
<li><a href="http://www.undeadcode.com/proyectos/esquemas-en-earwyn/">Esquemas en Earwyn</a></li>
<li><a href="http://www.undeadcode.com/proyectos/wod-abierta-beta-publica/">WoD, abierta beta pública</a></li>
<li><a href="http://www.undeadcode.com/proyectos/ajustando-el-sistema-de-patrocinadores/">Ajustando el sistema de patrocinadores</a></li>
<li><a href="http://www.undeadcode.com/proyectos/el-sistema-multi-idioma-de-earwyn-wod/">El sistema multi &#8211; idioma de Earwyn / WoD</a></li>
<li><a href="http://www.undeadcode.com/proyectos/el-simulador-de-partidos-de-wod/">El simulador de partidos de WoD</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://www.undeadcode.com/proyectos/wod/nuevas-funcionalidades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Definiendo subplantillas en Earwyn</title>
		<link>http://www.undeadcode.com/proyectos/earwyn/definiendo-subplantillas-en-earwyn/</link>
		<comments>http://www.undeadcode.com/proyectos/earwyn/definiendo-subplantillas-en-earwyn/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 16:49:17 +0000</pubDate>
		<dc:creator>Eduardo Millán</dc:creator>
				<category><![CDATA[Earwyn]]></category>
		<category><![CDATA[desarrollo web framework php earwyn plantillas xhtml]]></category>

		<guid isPermaLink="false">http://www.undeadcode.com/?p=44</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>La semana pasada publicábamos un post sobre el sistema de plantillas de <strong>Earwyn</strong>, 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.</p>
<p><span style="color: #000080;"><strong>Subplantillas</strong></span></p>
<p>La forma de solucionarlo ha sido ampliando el <em>parser</em> 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 <em>list.html</em>, é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.</p>
<p>En una misma plantilla se pueden definir ilimitadas subplantillas, asignándolas un nombre. Por ejemplo:</p>
<blockquote><p>&lt;ul &gt;<br />
[st:list_item]&lt; li class=&#8221;mi_clase&#8221;&gt;¿elem?&lt;/li&gt;[/st]<br />
&lt; /ul&gt;</p></blockquote>
<p>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</p>
<blockquote><p>$wod_engine-&gt;set_subtpl(&#8220;list_item&#8221;);</p></blockquote>
<p>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:</p>
<blockquote><p>$wod_engine-&gt;add_subtpl(&#8220;list_item&#8221;, $listado);</p></blockquote>
<p>De este modo, nos ahorramos todas las plantillas .html que pertenecían a filas de tablas, elementos de listas&#8230; ganando mucho en organización tanto de ficheros como de funcionamiento.</p>
<p><span style="color: #000080;"><strong>Resumiendo</strong></span></p>
<p>La forma básica del uso de todo esto, sería algo como:</p>
<ul>
<li>Definir cual será la plantilla general que el módulo lleva asociada. (<em>set_template</em>)</li>
<li>Calcular el contenido de cada subplantilla en ella (<em>set_subtpl</em> y <em>add_subtpl</em>)</li>
<li>Calcular el contenido de la plantilla general</li>
<li>Obtener el código <em>xhtml</em> de todo el conjunto (<em>get_xhtml</em>)</li>
</ul>
<p><span style="color: #000080;"><strong>Y algo más</strong></span></p>
<p>En el post anterior, no comentamos que desde las plantillas también es posible llamar a <strong>funciones</strong> <em>php</em>, encerrándolas entre los símbolos<strong> []</strong>. Así en muchas ocasiones podemos ahorrar definir y calcular variables mediante<em> ¿?</em> y mostrar el contenido deseado directamente.</p>

<p><strong>Artículos recientes relacionados:</strong></p>
<ul>
<li><a href="http://www.undeadcode.com/proyectos/esquemas-en-earwyn/">Esquemas en Earwyn</a></li>
<li><a href="http://www.undeadcode.com/proyectos/el-sistema-multi-idioma-de-earwyn-wod/">El sistema multi &#8211; idioma de Earwyn / WoD</a></li>
<li><a href="http://www.undeadcode.com/proyectos/avances-y-retrasos/">Avances y retrasos</a></li>
<li><a href="http://www.undeadcode.com/proyectos/wod/nuevas-funcionalidades/">Nuevas funcionalidades</a></li>
<li><a href="http://www.undeadcode.com/proyectos/earwyn/el-sistema-de-plantillas-de-earwyn/">El sistema de plantillas de Earwyn</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://www.undeadcode.com/proyectos/earwyn/definiendo-subplantillas-en-earwyn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El sistema de plantillas de Earwyn</title>
		<link>http://www.undeadcode.com/proyectos/earwyn/el-sistema-de-plantillas-de-earwyn/</link>
		<comments>http://www.undeadcode.com/proyectos/earwyn/el-sistema-de-plantillas-de-earwyn/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 15:50:29 +0000</pubDate>
		<dc:creator>Eduardo Millán</dc:creator>
				<category><![CDATA[Earwyn]]></category>
		<category><![CDATA[desarollo web]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plantillas]]></category>
		<category><![CDATA[template]]></category>

		<guid isPermaLink="false">http://www.undeadcode.com/?p=43</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>En varias ocasiones hemos comentado cosillas sobre el sistema de plantillas de <strong>Earwyn</strong>, 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.</p>
<p><span style="color: #000080;"><strong>Leyendo</strong></span></p>
<p>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,</p>
<blockquote><p><em>$wod_engine-&gt;set_template(&#8220;my_template&#8221;);</em></p></blockquote>
<p>El sistema buscará el fichero my_template.html, dentro de la carpeta de plantillas del <em>theme</em> (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.</p>
<blockquote><p><em>$wod_engine-&gt;add_value(&#8220;my_variable&#8221;, &#8220;valor de la variable&#8221;);</em></p></blockquote>
<p>Por ejemplo, aquí reemplazaremos la cadena <em>¿my_variable?</em> presente en la plantilla <em>xhtml</em> por la cadena &#8220;<em>valor de la variable</em>&#8220;, una vez llamemos al método que obtiene el código final:</p>
<blockquote><p><em>$texto_a_mostrar = $wod_engine-&gt;get_xhtml();</em></p></blockquote>
<p><span style="color: #000080;"><strong>Símbolos</strong></span></p>
<p>Además de variables calculadas en el módulo php, en las plantillas también pueden mostrarse otra serie de datos:</p>
<ul>
<li><strong>Literales:</strong> puesto que el <em>framework</em> tiene soporte multi &#8211; idioma, también debe poder aplicarse en el contenido <em>xhtml</em>. 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).</li>
<li><strong>Campos:</strong> de forma directa, se puede obtener el valor para un determinado campo. Las cadenas entre corchetes indican el nombre del campo&#8230; 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.</li>
<li><strong>Variables predefinidas:</strong> 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 <em>GET / POST</em> en <em>URLs</em> y/o formularios, datos de acceso global como el <em>session_id</em> generado por <em>php</em>, <em>cookies</em> generadas&#8230;</li>
</ul>
<p><span style="color: #000080;"><strong>Ventajas</strong></span></p>
<p>Esta forma de plantear el desarrollo nos ofrece un par de ventajas básicas:</p>
<ul>
<li><strong>Organización:</strong> 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 <em>php</em>.</li>
<li><strong>Flexibilidad:</strong> 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 <em>framework</em>.</li>
</ul>
<p><span style="color: #000080;"><strong>Desventajas</strong></span></p>
<p>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 <em>list item</em> de la lista. Esto supone una pequeña molestia de andar creando plantillas muy simples&#8230; pero es de sobra compensado por las ventajas. De todas formas, andamos dando alguna vuelta a cómo mejorar el comportamiento de <strong>Earwyn</strong> en estos casos. <img src='http://www.undeadcode.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><span style="color: #000080;"><strong>Código</strong></span></p>
<p>Una pequeña captura de una parte del código de una plantilla <em>xhtml</em>..</p>
<p><a href="http://www.undeadcode.com/glr/earwyn_code.png" target="_blank"><img style="border: 0pt none;" src="http://www.undeadcode.com/glr/earwyn_code.png" alt="Código Plantillas Earwyn" width="400" height="100" /></a></p>

<p><strong>Artículos recientes relacionados:</strong></p>
<ul>
<li><a href="http://www.undeadcode.com/proyectos/esquemas-en-earwyn/">Esquemas en Earwyn</a></li>
<li><a href="http://www.undeadcode.com/proyectos/el-sistema-multi-idioma-de-earwyn-wod/">El sistema multi &#8211; idioma de Earwyn / WoD</a></li>
<li><a href="http://www.undeadcode.com/proyectos/avances-y-retrasos/">Avances y retrasos</a></li>
<li><a href="http://www.undeadcode.com/proyectos/wod/nuevas-funcionalidades/">Nuevas funcionalidades</a></li>
<li><a href="http://www.undeadcode.com/proyectos/earwyn/definiendo-subplantillas-en-earwyn/">Definiendo subplantillas en Earwyn</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://www.undeadcode.com/proyectos/earwyn/el-sistema-de-plantillas-de-earwyn/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Themes en Earwyn / WoD</title>
		<link>http://www.undeadcode.com/proyectos/themes-en-earwyn-wod/</link>
		<comments>http://www.undeadcode.com/proyectos/themes-en-earwyn-wod/#comments</comments>
		<pubDate>Sat, 31 May 2008 10:11:38 +0000</pubDate>
		<dc:creator>Eduardo Millán</dc:creator>
				<category><![CDATA[Earwyn]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Win or Defeat]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[win or defeat]]></category>

		<guid isPermaLink="false">http://www.undeadcode.com/?p=42</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer publicábamos un pequeño avance sobre <strong>Earwyn</strong>, en el foro de <a title="CP Labs" href="http://www.cplabs.es" target="_blank">cplabs</a>, que se puede seguir en este <a title="Earwyn en CP Labs" href="http://www.cplabs.es/foros/viewtopic.php?f=35&amp;t=1946" target="_blank">enlace</a>. En el post se enlazan con un par de capturas referentes a los <em>themes</em> del juego, que <em>Earwyn</em> controla y gestiona a través de su sistema de temas. ¿Cómo funciona?</p>
<p>La potencia del sistema radica en el sistema de plantillas, implementado a través de una clase llamada <em>EWN_Template</em> y encargado de interpretar los <em>tags</em> dentro de los ficheros .<em>html</em>. Los themes están dividos en directorios y tienen asociado una hoja de estilos <em>CSS2</em>, que da formato visual al diseño de cada uno. Al cargar cada página, <em>Earwyn</em> sabe qué conjunto de plantillas leer (es decir, de qué directorio) en función de lo que tenga definido el usuario o el <em>theme</em> por defecto si el usuario no está logeado.</p>
<p>Puesto que todo el código <em>xhtml</em> está desligado de la generación de datos a través de <em>php</em>, 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.</p>
<p><code><a href="http://www.undeadcode.com/glr/cap_wod_team.jpg" target="_blank"><img style="border: 0pt none;" src="http://www.undeadcode.com/glr/cap_wod_team.jpg" alt="Plantilla Theme Pruebas" width="200" height="200" /></a> <a href="http://www.undeadcode.com/glr/cap_wod_team_20_02.png" target="_blank"><img style="border: 0pt none;" src="http://www.undeadcode.com/glr/cap_wod_team_20_02.png" alt="Theme Red Alert Alpha" width="200" height="200" /></a></code></p>
<p>En la primera captura, el theme activo es el de pruebas. El segundo, el <em>theme red alert</em> en <em>alpha</em>. 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. <img src='http://www.undeadcode.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Aunque quizá eso no esté en la fase <em>beta</em>&#8230;. <img src='http://www.undeadcode.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p><strong>Artículos recientes relacionados:</strong></p>
<ul>
<li><a href="http://www.undeadcode.com/proyectos/encarando-un-verano-muy-intenso/">Encarando un verano muy intenso</a></li>
<li><a href="http://www.undeadcode.com/proyectos/crystal-reversi-ya-disponible-en-la-appstore/">Crystal Reversi, ya disponible en la AppStore</a></li>
<li><a href="http://www.undeadcode.com/proyectos/postmortem-tinted-turns-iphone/">Postmortem: Tinted Turns (iPhone)</a></li>
<li><a href="http://www.undeadcode.com/proyectos/independizando-somflee/">Independizando Somflee</a></li>
<li><a href="http://www.undeadcode.com/proyectos/cerrando-un-proyecto-tinted-turns/">Cerrando un proyecto: Tinted Turns</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://www.undeadcode.com/proyectos/themes-en-earwyn-wod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Earwyn y WoD</title>
		<link>http://www.undeadcode.com/proyectos/earwyn-y-wod/</link>
		<comments>http://www.undeadcode.com/proyectos/earwyn-y-wod/#comments</comments>
		<pubDate>Thu, 15 May 2008 13:43:00 +0000</pubDate>
		<dc:creator>Eduardo Millán</dc:creator>
				<category><![CDATA[Earwyn]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Win or Defeat]]></category>
		<category><![CDATA[desarrollo web earwyn php framework wod]]></category>

		<guid isPermaLink="false">http://www.undeadcode.com/?p=37</guid>
		<description><![CDATA[En 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 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="border: 0pt none; margin: 5px; float: left;" src="http://www.undeadcode.com/img/earwyn_powered_thumb.png" alt="Powered by Earwyn" width="125" height="187" />En 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 <em>framework PHP</em> llamado <strong>Earwyn</strong>, 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 <em>POO</em> y programado bajo<em> php 5.2</em>, hereda conceptos de <a title="Stormie" href="http://www.whatistc.com/category/desarolloweb/stormie/" target="_blank">Stormie</a> y <em><strong>Julie</strong></em> (un constructor de páginas parecido al que mueve <em>blogspot</em>), añadiendo varias mejoras de implementación y funcionalidad. Además, incorpora diversas funciones <em>javascript</em>, con un motor propio de <em>AJAX</em>, complementado por las librerías <a title="Prototype Script" href="http://www.prototypejs.org/" target="_blank">Prototype</a> (y su <em>add on</em> <a title="script.aculo.us" href="http://script.aculo.us/" target="_blank">script.aculo.us</a>) y <a title="jQuery" href="http://jquery.com/" target="_blank">jQuery</a>.</p>
<p>Entre sus principales características:</p>
<ul>
<li><strong>Temas:</strong> 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&#8230;</li>
<li><strong>Usuarios:</strong> se controlan los usuarios activos, los logeados en el sistema, los baneados, los que no han validado su cuenta, los que son admins&#8230;. Cada usuario tiene un perfil concreto y se monitorizan sus acciones, como parte de la seguridad de la aplicación&#8230;.</li>
<li><strong>Plantillas:</strong> 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.</li>
<li><strong>Menús:</strong> 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&#8230;.</li>
<li><strong>Módulos:</strong> la aplicación se estructura en módulos. Así, se pueden añadir tantos módulos adicionales como el juego final requiera&#8230;.</li>
<li><strong>Imágenes:</strong> escala imágenes, genera los tags xhtml de forma automática&#8230;.</li>
<li><strong>Ficheros:</strong> lee / escribe ficheros, soportando <em>.txt</em> y <em>.xml</em>&#8230;</li>
<li><strong>Cadenas:</strong> interpreta bbcode, formatea fechas, números y <em>strings</em>&#8230;</li>
<li><strong>Multi &#8211; Idioma:</strong> soporta ilimitados idiomas, que pueden convivir en el mismo servidor&#8230;. o teniendo cada versión en servidores diferentes.</li>
</ul>
<p>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&#8230; y la idea de presentar la versión beta (y abierta al juego) en la campus party toma fuerza&#8230;.</p>
<p>Seguiremos informando&#8230;.</p>

<p><strong>Artículos recientes relacionados:</strong></p>
<ul>
<li><a href="http://www.undeadcode.com/proyectos/encarando-un-verano-muy-intenso/">Encarando un verano muy intenso</a></li>
<li><a href="http://www.undeadcode.com/proyectos/crystal-reversi-ya-disponible-en-la-appstore/">Crystal Reversi, ya disponible en la AppStore</a></li>
<li><a href="http://www.undeadcode.com/proyectos/postmortem-tinted-turns-iphone/">Postmortem: Tinted Turns (iPhone)</a></li>
<li><a href="http://www.undeadcode.com/proyectos/independizando-somflee/">Independizando Somflee</a></li>
<li><a href="http://www.undeadcode.com/proyectos/cerrando-un-proyecto-tinted-turns/">Cerrando un proyecto: Tinted Turns</a></li>
</ul><br />
]]></content:encoded>
			<wfw:commentRss>http://www.undeadcode.com/proyectos/earwyn-y-wod/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
