<?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>Antonio Cortés&#187; Desarrollo</title>
	<atom:link href="http://www.antoniocortes.com/tag/desarrollo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.antoniocortes.com</link>
	<description>Recursos y otras hierbas</description>
	<lastBuildDate>Thu, 02 Feb 2012 18:59:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Implementar Haanga como sistema de plantillas para OpenCart</title>
		<link>http://www.antoniocortes.com/2010/10/implementar-haanga-como-sistema-de-plantillas-para-opencart/</link>
		<comments>http://www.antoniocortes.com/2010/10/implementar-haanga-como-sistema-de-plantillas-para-opencart/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 19:52:31 +0000</pubDate>
		<dc:creator>Antonio Cortés</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Haanga]]></category>
		<category><![CDATA[OpenCart]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[templates]]></category>

		<guid isPermaLink="false">http://www.antoniocortes.com/?p=187</guid>
		<description><![CDATA[OpenCart es una plataforma de comercio electrónica hecha en php, con un desarrollo impecable, 100% MVC. Como prueba de concepto he reescrito el sistema de plantillas de OpenCart a Haanga (plantillas “Django” para PHP, über eficiente) de César Rodas. ¿ Por que Haanga ?, simplemente porque me gusta. ¿ Por qué OpenCart ?, simplemente porque [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.opencart.com/">OpenCart</a> es una plataforma de comercio electrónica hecha en <a href="http://www.antoniocortes.com/tag/php/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con PHP">php</a>, con un <a href="http://www.antoniocortes.com/tag/desarrollo/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con Desarrollo">desarrollo</a> impecable, 100% MVC.  Como prueba de concepto he reescrito el sistema de plantillas de <a href="http://www.opencart.com/">OpenCart</a> a <a href="http://github.com/crodas/Haanga">Haanga</a> (plantillas “Django” para PHP, über eficiente) de <a href="http://crodas.org/">César Rodas</a>.</p>
<p>¿ Por que <a href="http://github.com/crodas/Haanga">Haanga</a> ?, simplemente porque me gusta.<br />
¿ Por qué <a href="http://www.opencart.com/">OpenCart</a> ?, simplemente porque me gusta como está desarrollado.</p>
<p>Implementación, he creado una clase TemplateEngine con el siguiente código:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">class</span> TemplateEngine <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">public</span> <span class="re1">$template</span> <span class="sy0">=</span> <span class="kw2">null</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">public</span> <span class="re1">$default</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">public</span> <span class="re1">$config</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">function</span> __construct<span class="br0">&#40;</span> <span class="re1">$templateDir</span> <span class="sy0">=</span> <span class="kw2">null</span> &nbsp;<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">loadDefaults</span><span class="br0">&#40;</span> <span class="re1">$templateDir</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;protected <span class="kw2">function</span> loadDefaults<span class="br0">&#40;</span> <span class="re1">$templateDir</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">default</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">config</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#39;template_dir&#39;</span> <span class="sy0">=&gt;</span> <span class="br0">&#40;</span><span class="br0">&#40;</span> <span class="kw3">is_null</span><span class="br0">&#40;</span> <span class="re1">$templateDir</span> <span class="br0">&#41;</span><span class="br0">&#41;</span> ? Settings<span class="sy0">::</span><span class="me2">getInstance</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">getValue</span><span class="br0">&#40;</span><span class="st0">&#39;Web.root&#39;</span><span class="br0">&#41;</span> <span class="sy0">.</span><span class="st0">&#39;<a href="http://www.antoniocortes.com/tag/templates/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con templates">templates</a>&#39;</span> <span class="sy0">:</span> <span class="re1">$templateDir</span><span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#39;cache_dir&#39;</span> <span class="sy0">=&gt;</span> &nbsp;Settings<span class="sy0">::</span><span class="me2">getInstance</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">getValue</span><span class="br0">&#40;</span><span class="st0">&#39;Web.root&#39;</span><span class="br0">&#41;</span><span class="sy0">.</span> <span class="st0">&#39;cache.templates&#39;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#39;compiler&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="st0">&#39;if_empty&#39;</span> <span class="sy0">=&gt;</span> <span class="kw2">FALSE</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="st0">&#39;autoescape&#39;</span> <span class="sy0">=&gt;</span> <span class="kw2">FALSE</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="st0">&#39;strip_whitespace&#39;</span> <span class="sy0">=&gt;</span> <span class="kw2">TRUE</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="st0">&#39;allow_exec&#39;</span> &nbsp;<span class="sy0">=&gt;</span> <span class="kw2">TRUE</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="st0">&#39;global&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span> <span class="br0">&#41;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="st0">&#39;use_hash_filename&#39;</span> <span class="sy0">=&gt;</span> <span class="kw2">FALSE</span> &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">function</span> loadEngine<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">// incluimos <a href="http://www.antoniocortes.com/tag/haanga/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con Haanga">Haanga</a> &nbsp;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">require_once</span> Settings<span class="sy0">::</span><span class="me2">getInstance</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">getValue</span><span class="br0">&#40;</span><span class="st0">&#39;Web.root&#39;</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st0">&#39;lib/vendors/Haanga.php&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;Haanga<span class="sy0">::</span><span class="me2">configure</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">config</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> loadTemplate<span class="br0">&#40;</span> <span class="re1">$name</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">template</span> <span class="sy0">=</span> &nbsp; <span class="re1">$name</span> &nbsp;<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> display<span class="br0">&#40;</span> <span class="re1">$vars</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">loadEngine</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$vars</span> <span class="sy0">=</span> <span class="kw3">array_merge</span><span class="br0">&#40;</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">default</span><span class="sy0">,</span> <span class="re1">$vars</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;Haanga<span class="sy0">::</span><span class="me2">Load</span><span class="br0">&#40;</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">template</span> <span class="sy0">,</span> <span class="re1">$vars</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Ahora sólo queda indicarle al <a href="http://www.antoniocortes.com/tag/opencart/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con OpenCart">opencart</a> que haga uso de esta clase:<br />
en /system/engine/controller.php</p>
<p>Modificando los métodos render y fetch, renombrando el antiguo fetch a __fetch</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span><span class="sy0">&#8230;</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">protected <span class="kw2">function</span> render<span class="br0">&#40;</span><span class="re1">$return</span> <span class="sy0">=</span> <span class="kw2">FALSE</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">children</span> <span class="kw1">as</span> <span class="re1">$child</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$action</span> <span class="sy0">=</span> <span class="kw2">new</span> Action<span class="br0">&#40;</span><span class="re1">$child</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$file</span> &nbsp; <span class="sy0">=</span> <span class="re1">$action</span><span class="sy0">-&gt;</span><span class="me1">getFile</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$class</span> &nbsp;<span class="sy0">=</span> <span class="re1">$action</span><span class="sy0">-&gt;</span><span class="me1">getClass</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$method</span> <span class="sy0">=</span> <span class="re1">$action</span><span class="sy0">-&gt;</span><span class="me1">getMethod</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$args</span> &nbsp; <span class="sy0">=</span> <span class="re1">$action</span><span class="sy0">-&gt;</span><span class="me1">getArgs</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">file_exists</span><span class="br0">&#40;</span><span class="re1">$file</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">require_once</span><span class="br0">&#40;</span><span class="re1">$file</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$controller</span> <span class="sy0">=</span> <span class="kw2">new</span> <span class="re1">$class</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">registry</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$controller</span><span class="sy0">-&gt;</span><span class="me1">index</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">data</span><span class="br0">&#91;</span><span class="re1">$controller</span><span class="sy0">-&gt;</span><span class="me1">id</span><span class="br0">&#93;</span> <span class="sy0">=</span> &nbsp;<span class="re1">$controller</span><span class="sy0">-&gt;</span><span class="me1">output</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">addToModule</span><span class="br0">&#40;</span> <span class="re1">$controller</span><span class="sy0">-&gt;</span><span class="me1">id</span><span class="sy0">,</span> <span class="re1">$controller</span><span class="sy0">-&gt;</span><span class="me1">output</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">exit</span><span class="br0">&#40;</span><span class="st0">&#39;Error: Could not load controller &#39;</span> <span class="sy0">.</span> <span class="re1">$child</span> <span class="sy0">.</span> <span class="st0">&#39;!&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re1">$return</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">fetch</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">template</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">output</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">fetch</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">template</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; protected <span class="kw2">function</span> addToModule<span class="br0">&#40;</span> <span class="re1">$module</span> <span class="sy0">,</span> <span class="re1">$output</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$i</span> <span class="sy0">=</span> <span class="nu0">0</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="sy0">!</span><span class="kw3">isset</span><span class="br0">&#40;</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">data</span><span class="br0">&#91;</span><span class="st0">&#39;modules&#39;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">return</span> <span class="sy0">;</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">foreach</span><span class="br0">&#40;</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">data</span><span class="br0">&#91;</span><span class="st0">&#39;modules&#39;</span><span class="br0">&#93;</span> <span class="kw1">as</span> <span class="re1">$item</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="re1">$item</span><span class="br0">&#91;</span><span class="st0">&#39;code&#39;</span><span class="br0">&#93;</span> <span class="sy0">==</span> <span class="re1">$module</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">data</span><span class="br0">&#91;</span><span class="st0">&#39;modules&#39;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="re1">$i</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;output&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re1">$output</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$i</span><span class="sy0">++;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; protected <span class="kw2">function</span> fetch<span class="br0">&#40;</span><span class="re1">$filename</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="kw3">substr</span><span class="br0">&#40;</span> <span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;REQUEST_URI&#39;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">7</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="st0">&#39;/admin/&#39;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re1">$this</span><span class="sy0">-&gt;</span>__fetch<span class="br0">&#40;</span> <span class="re1">$filename</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">ob_start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">templateEngine</span><span class="sy0">-&gt;</span><span class="me1">loadTemplate</span><span class="br0">&#40;</span> <span class="re1">$filename</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">templateEngine</span><span class="sy0">-&gt;</span><span class="me1">display</span><span class="br0">&#40;</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$content</span> <span class="sy0">=</span> <span class="kw3">ob_get_contents</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">ob_end_clean</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re1">$content</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">protected <span class="kw2">function</span> __fetch<span class="br0">&#40;</span><span class="re1">$filename</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$file</span> <span class="sy0">=</span> DIR_TEMPLATE <span class="sy0">.</span> <span class="re1">$filename</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">file_exists</span><span class="br0">&#40;</span><span class="re1">$file</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">extract</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">ob_start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">require</span><span class="br0">&#40;</span><span class="re1">$file</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$content</span> <span class="sy0">=</span> <span class="kw3">ob_get_contents</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">ob_end_clean</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re1">$content</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span><span class="br0">&#40;</span><span class="st0">&#39;Error: Could not load template &#39;</span> <span class="sy0">.</span> <span class="re1">$file</span> <span class="sy0">.</span> <span class="st0">&#39;!&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span><span class="sy0">&#8230;</span><span class="br0">&#93;</span></div>
</li>
</ol>
</div>
<p>Para evitar utilizar Haanga en la administración se comprueba que la url no sea de la administración, de ser así se utiliza el motor de plantillas original.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span><span class="sy0">&#8230;</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="kw3">substr</span><span class="br0">&#40;</span> <span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;REQUEST_URI&#39;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">7</span><span class="br0">&#41;</span> <span class="sy0">==</span> <span class="st0">&#39;/admin/&#39;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re1">$this</span><span class="sy0">-&gt;</span>__fetch<span class="br0">&#40;</span> <span class="re1">$filename</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span><span class="sy0">&#8230;</span><span class="br0">&#93;</span></div>
</li>
</ol>
</div>
<p>Una de las particularidades de las plantillas es que hacen uso de $$variable a la hora de mostrar la salida de los módulos, y es por esto (imposible, por lo que parece, en Haanga) que he añadido un método y comprobación para que cada módulo devuelva a la plantilla su salida en un elemento &#8220;output&#8221; de la matriz y es el que mostraremos.</p>
<p>Así, al final, una plantilla como la de la visualización de las categorías queda en algo como los siguientes ejemplos:<br />
/catalog/view/theme/default/common/column_right.tpl</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>div id<span class="sy0">=</span><span class="st0">&quot;column_right&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">for</span> module in modules <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span><span class="br0">&#123;</span> module<span class="sy0">.</span>output <span class="br0">&#125;</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endfor</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>/catalog/view/theme/default/product/category.tpl</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw2">extends</span> <span class="st0">&quot;layout/default.html&quot;</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span><span class="sy0">%</span> block content <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>div id<span class="sy0">=</span><span class="st0">&quot;content&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;top&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;left&quot;</span><span class="sy0">&gt;&lt;/</span>div<span class="sy0">&gt;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;right&quot;</span><span class="sy0">&gt;&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;center&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>h1<span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="br0">&#123;</span> heading_title <span class="br0">&#125;</span><span class="br0">&#125;</span><span class="sy0">&lt;/</span>h1<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;middle&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>table style<span class="sy0">=</span><span class="st0">&quot;padding-bottom:10px;&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;</span>tr<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">if</span> thumb <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>td<span class="sy0">&gt;&lt;</span>img src<span class="sy0">=</span><span class="st0">&quot;{{ thumb }}&quot;</span> alt<span class="sy0">=</span><span class="st0">&quot;{{ heading_title }}&quot;</span> <span class="sy0">/&gt;&lt;/</span>td<span class="sy0">&gt;</span> &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endif</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">if</span> description <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>td<span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="br0">&#123;</span> description <span class="br0">&#125;</span><span class="br0">&#125;</span><span class="sy0">&lt;/</span>td<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endif</span> <span class="sy0">%</span><span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;/</span>tr<span class="sy0">&gt;</span> &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">&lt;/</span>table<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">if</span> &nbsp;<span class="sy0">!</span>categories &nbsp;<span class="sy0">&amp;&amp;</span> &nbsp; <span class="sy0">!</span>products <span class="sy0">%</span><span class="br0">&#125;</span><span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;content&quot;</span><span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="br0">&#123;</span> text_error<span class="sy0">|</span>default<span class="sy0">:</span><span class="st0">&quot;&quot;</span> <span class="br0">&#125;</span><span class="br0">&#125;</span><span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endif</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">if</span> categories <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;</span>table<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">for</span> category in categories <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>a href<span class="sy0">=</span><span class="st0">&quot;{{ category[&#39;href&#39;] }}&quot;</span><span class="sy0">&gt;&lt;</span>img src<span class="sy0">=</span><span class="st0">&quot;{{ category[&#39;thumb&#39;] }}&quot;</span> title<span class="sy0">=</span><span class="st0">&quot;{{ category[&#39;name&#39;] }}&quot;</span> alt<span class="sy0">=</span><span class="st0">&quot;{{ category[&#39;name&#39;] }}&quot;</span> style<span class="sy0">=</span><span class="st0">&quot;margin-bottom: 3px;&quot;</span> <span class="sy0">/&gt;&lt;/</span>a<span class="sy0">&gt;&lt;</span>br <span class="sy0">/&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>a href<span class="sy0">=</span><span class="st0">&quot;{{ category[&#39;href&#39;] }}&quot;</span><span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="br0">&#123;</span> category<span class="br0">&#91;</span><span class="st0">&#39;name&#39;</span><span class="br0">&#93;</span> <span class="br0">&#125;</span><span class="br0">&#125;</span><span class="sy0">&lt;/</span>a<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;/</span>table<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endfor</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endif</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">if</span> products <span class="sy0">%</span><span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;sort&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;div1&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>select name<span class="sy0">=</span><span class="st0">&quot;sort&quot;</span> onchange<span class="sy0">=</span><span class="st0">&quot;location = this.value&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> buffer sort_order <span class="sy0">%</span><span class="br0">&#125;</span><span class="br0">&#123;</span><span class="br0">&#123;</span><span class="kw3">sort</span><span class="br0">&#125;</span><span class="br0">&#125;</span><span class="sy0">-</span><span class="br0">&#123;</span><span class="br0">&#123;</span>order<span class="br0">&#125;</span><span class="br0">&#125;</span><span class="br0">&#123;</span><span class="sy0">%</span> endbuffer <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">for</span> <span class="kw3">sort</span> &nbsp;in sorts <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">&lt;</span>option value<span class="sy0">=</span><span class="st0">&quot;{{ sort[&#39;href&#39;] }}&quot;</span> <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">if</span> sort_order <span class="sy0">==</span> <span class="kw3">sort</span><span class="br0">&#91;</span><span class="st0">&#39;value&#39;</span><span class="br0">&#93;</span> <span class="sy0">%</span><span class="br0">&#125;</span> selected<span class="sy0">=</span><span class="st0">&quot;selected&quot;</span><span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endif</span> <span class="sy0">%</span><span class="br0">&#125;</span><span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="br0">&#123;</span> <span class="kw3">sort</span><span class="br0">&#91;</span><span class="st0">&#39;text&#39;</span><span class="br0">&#93;</span> <span class="br0">&#125;</span><span class="br0">&#125;</span><span class="sy0">&lt;/</span>option<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endfor</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>select<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;div2&quot;</span><span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="br0">&#123;</span> text_sort <span class="br0">&#125;</span><span class="br0">&#125;</span><span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> inline <span class="st0">&quot;elements/lista_productos.html&quot;</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;pagination&quot;</span><span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="br0">&#123;</span> pagination <span class="br0">&#125;</span><span class="br0">&#125;</span><span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span><span class="sy0">%</span> <span class="kw1">endif</span> <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;bottom&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;left&quot;</span><span class="sy0">&gt;&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;right&quot;</span><span class="sy0">&gt;&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>div <span class="kw2">class</span><span class="sy0">=</span><span class="st0">&quot;center&quot;</span><span class="sy0">&gt;&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>div<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span><span class="sy0">%</span> endblock <span class="sy0">%</span><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.antoniocortes.com/2010/10/implementar-haanga-como-sistema-de-plantillas-para-opencart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novas CMS</title>
		<link>http://www.antoniocortes.com/2010/04/novas-cms/</link>
		<comments>http://www.antoniocortes.com/2010/04/novas-cms/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 16:24:21 +0000</pubDate>
		<dc:creator>Antonio Cortés</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.antoniocortes.com/?p=142</guid>
		<description><![CDATA[Gestor de Periódicos digitales]]></description>
			<content:encoded><![CDATA[<p>Desarrollado con <a href="http://www.antoniocortes.com/tag/php/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con PHP">PHP</a> 5, <strong>Novas CMS </strong>es un gestor multi-cabecera de Ediciones digitales.</p>
<p>Características:</p>
<ul>
<li>Gestión de Flujos de Edición: Creación, revisión y publicación</li>
<li>Gestión visual de Portada</li>
<li>Multiples cabeceras / Dominios.</li>
<li>Roles: Administrador, redactor, colaborador, editor, &#8230; Ampliables y configurables</li>
<li>Sistema de caché y gestión de recursos.</li>
<li>Gestión de librería gráfica y sistema visual de cambio de encuadres.</li>
<li>&#8230;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.antoniocortes.com/2010/04/novas-cms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iconos para desarrolladores de Android</title>
		<link>http://www.antoniocortes.com/2009/11/iconos-para-desarrolladores-de-android/</link>
		<comments>http://www.antoniocortes.com/2009/11/iconos-para-desarrolladores-de-android/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 13:41:17 +0000</pubDate>
		<dc:creator>Antonio Cortés</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[iconos]]></category>
		<category><![CDATA[móvil]]></category>

		<guid isPermaLink="false">http://www.antoniocortes.com/?p=81</guid>
		<description><![CDATA[WebAppers, nos ofrece 30 iconos, y sus fuentes para los desarrolladores de esta plataforma.]]></description>
			<content:encoded><![CDATA[<p>WebAppers, nos ofrece 30 <a href="http://www.antoniocortes.com/tag/iconos/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con iconos">iconos</a>, y sus fuentes para los desarrolladores de esta plataforma.</p>
<p>La licencia es Creative Commons Attribution Share Alike, y se puede otener en la siguiente direccion: <a href="http://www.webappers.com/2009/11/07/download-free-andriod-icons-for-developers/">WebAppers</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoniocortes.com/2009/11/iconos-para-desarrolladores-de-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entre manos</title>
		<link>http://www.antoniocortes.com/2008/09/entre-mano/</link>
		<comments>http://www.antoniocortes.com/2008/09/entre-mano/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 17:41:22 +0000</pubDate>
		<dc:creator>Antonio Cortés</dc:creator>
				<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[extjs]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Joose]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yahoo ui library]]></category>

		<guid isPermaLink="false">http://www.blog.antoniocortes.com/?p=9</guid>
		<description><![CDATA[Últimamente estoy liado estudiando y probando diferentes librerías y recursos]]></description>
			<content:encoded><![CDATA[<p>Últimamente estoy liado estudiando y probando diferentes librerías y recursos:</p>
<ul>
<li><a href="http://extjs.com/">ExtJS</a>:  <a href="http://www.antoniocortes.com/tag/javascript/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con Javascript">Javascript</a>.</li>
<li><a href="http://www.cakephp.org">CakePHP</a>:  <a href="http://www.antoniocortes.com/tag/php/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con PHP">PHP</a>.</li>
<li><a href="http://code.google.com/p/joose-js/">Joose</a>:  Javascript.</li>
<li><a href="http://www.imatia.com/ontimize">Ontimize</a>: <a href="http://www.antoniocortes.com/tag/java/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con Java">Java</a>.</li>
<li><a href="http://developer.yahoo.com/yui/">Yahoo UI Library</a>: Javascript.</li>
<li>&#8230;</li>
</ul>
<p>Son muchos los ejemplos, trucos y &#8220;recetas&#8221; que tengo para cada uno de estos y los iré publicando para tenerlas ordenadas y localizadas y también por que seguramente serán de utilidad a otros.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoniocortes.com/2008/09/entre-mano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

