Actualización: He modificado el post para agregar documentación más detallada sobre el uso de la clase.

En gelato estamos usando una clase para pocesar los themes de los tumblelogs, una clase heredada de esta versión alpha de Códice CMS (versión que solo quedó en el SVN) y mejorada para procesar bloques en gelato.

Creé este motor porque requeria algo ligero, que tuviera sólo lo que se necesita y nada más, por eso no utilicé ninguno de los tantos ya existentes y muy buenos.

La dejo aquí por si a alguien le interesa para algo:

La clase: themes.class.php

Modo de utilización

Para utilizar la clase debemos seguir los siguientes pasos:

La estructura de directorios para utilizar el template engine es la siguiente:

  • ./themes <– Se deben agregar los themes SIEMPRE dentro de la carpeta themes.
  • ./themes/nombreTheme/ <– Por cada theme se debe crear una nueva carpeta.
  • ./themes/nombreTheme/plantilla.htm <– dentro de la carpeta del theme se pueden agregar tantas plantillas como queramos.

Paso número 1: Crear la plantilla a utilizar, para esto debemos indicar entre llaves { } el nombre de la variable que va a sustituir el template engine. Debemos ponerle extensión .htm

post.htm (ruta: ./themes/gelato/post.htm)

  1. <div class="post">
  2.   <div class="regular">
  3.     <h2>
  4.         <a href="{Permalink}">{Title}</a>
  5.     </h2>
  6.     {Body}
  7.   </div>
  8. </div>

Paso número 2: Crear archivo PHP que creará una instancia del template engine para procesar la plantilla.

index.php (ruta: ./index.php)

  1. require_once("themes.class.php");
  2. // instancia con nombre del theme.
  3. $template = new plantillas("gelato");
  4. // variables a sustituir.
  5. $input = array("{Permalink}", "{Title}", "{Body}");
  6. // Valores reales.
  7. $output = array("http://www.gelatocms.com/", "Titulo", "Cuerpo");
  8. // cargamos la plantilla post y asignamos los valores.
  9. $template->cargarPlantilla($input, $output, "post");
  10. // mostramos la plantilla.
  11. $template->mostrarPlantilla();

Cualquier duda, favor de usar los comentarios del post.