MGTheme es una clase para manejo de archivos template, esto permite separar el codigo de programacion php del de diseño (html/xml) , la utilizacion de esta clase es identica a la de la clase de TemplatePower o la utilizada por los foros phpBB, los que allan manejado alguna de estas, no tendran problema para entender el uso de MGTheme.
Nota: esto lo hize para facilitarme la mudanza de las aplicaciones que realize integradas con estas clases a mi clase.
Uso:
Asignacion de variables tpl
Esto asigna valor dinamico a un contenido variable en el tpl, el contenido variable es identificado por estar entre llaves ( {VAR} )
Ejemplo:
index.tpl
Código:
index.php<html> <head> <title>{TITULO}</title> </head> <body> Ejemplo MGTheme, desarrollado por <b> {AUTOR} </b> </body> </html>
Código:
1.- Incluimos el archivo php que contiene la clase<?php require_once("MGTheme.php"); // ( 1 ) $theme = new MGTheme("./"); // ( 2 ) $theme->Cargar(array( // ( 3 ) 'index' => 'index.tpl') ); $theme->AsignarVars(array( // ( 4 ) 'TITULO' => 'Ejemplo clase MGTheme', 'AUTOR' => 'Marioly') ); $theme->Mostrar('index'); // ( 5 ) ?>
2.- Creamos un nuevo objeto de la clase, al constructor de clase pasamos un parametro que es el directorio donde estan los archivos tpl, en este caso trabajamos en el mismo directorio asi que sera "./" .
3.- Con el metodo Cargar asignamos el tpl que sera usado para esta iterasion, en este caso "index.tpl" y le asignamos un identificativo en el ejemplo es "index"
4.- Con AsignarVars asignamos valor a dos variables tpl con un array asociativo. Si se necesita asignar valor a solo una variable es posible usar el metodo AsignarVar donde el modo de uso es:
Código:
5.- Por ultimo utilizamos el metodo Mostrar para imprimir el resultado final del template, a este metodo se tiene que pasar por parametro el identificador del tpl requerido.$theme->AsignarVar('NOMBRE_VAR', 'texto valor');
En este ejemplo el resultado seria una pagina html con titulo "Ejemplo clase MGTheme" y con contenido:
Cita:
facil ha? Ejemplo MGTheme, desarrollado por Marioly
Uso de blockes
El uso de blockes es muy util, sobre todo usados en los bucles php. Ejemplo:
blockes.tpl
Código:
blockes.php<html> <head> <title>{TITULO}</title> </head> <body> Ejemplo uso de blockes: <br /> <!-- BEGIN blocke --> Repeticion de blocke <b> {blocke.REPETICION} </b><br /> <!-- END blocke --> </body> </html>
Código:
1.- Como vimos en el ejemplo de arriba, tenemos que indicar el archivo que sera utilizado, con el metodo "Cargar".<?php require_once("MGTheme.php"); $theme = new MGTheme("./"); $theme->Cargar(array( // ( 1 ) 'blockes' => 'blockes.tpl') ); $theme->AsignarVar('TITULO', 'Ejemplo blockes'); // ( 2 ) for($i=1;$i<=5;$i++) // ( 3 ) { $theme->AsignarBlocke('blocke', array( 'REPETICION' => $i) ); } $theme->Mostrar('blockes'); ?>
2 . -Asignamos valor a la variable "TITULO", como es solo una variable usaremos el metodo AsignarVar
3 .-Creamos un bucle for de 5 repeticiones, dentro de este iniciamos un blocke tpl y asignamos valor a una variable de el con el metodo AsignarBlocke, como primer parametro de este, indicamos el nombre del blocke y como segundo un array asociativo con los valores de sus variables.En el template los blockes deben iniciarse de la forma:
Cita:
y terminar:<!-- BEGIN nombre_blocke -->
Cita:
y a sus variables debe anteponerse el nombre del blocke seguido de un punto:<!-- END nombre_blocke -->
Cita:
Si no se antepone el nombre del blocke, el trato a estas sera de variables normales, ya que dentro de los blockes pueden ser tmb introducidas variables normales.{nombre_blocke.VAR}
El resultado del ejemplo seria:
Cita:
Uso de Sub-Blockes Ejemplo uso de blockes:
Repeticion de blocke 1
Repeticion de blocke 2
Repeticion de blocke 3
Repeticion de blocke 4
Repeticion de blocke 5
Repeticion de blocke 1
Repeticion de blocke 2
Repeticion de blocke 3
Repeticion de blocke 4
Repeticion de blocke 5
Esto aunque algo complicado, tmb es muy util, y bueno tomando de ejemplo los bulletin boards, como habran notado la mayoria usan un bucle para mostrar las categorias y dentro de cada repeticion otro bucle para mostrar los foros de la categoria, esto seria imposible aderirlo a un tpl sin el uso de sub-blockes, Ejemplo:
sub_blockes.tpl
Código:
sub_blockes.php<html> <head> </head> <body> Ejemplo uso de Sub-blockes: <br /> <!-- BEGIN blocke --> Repeticion de blocke <b> {blocke.REPETICION} </b><br /> <!-- BEGIN sub_blocke --> *Repeticion de Sub-blocke {blocke.sub_blocke.VARIABLE} <!-- END sub_blocke --> <!-- END blocke --> </body> </html>
Código:
En este ejemplo, programamos un bucle de 2 repeticiones y dentro otro bucle de tmb 2 repeticiones, el primero asignara valor al blocke principal y el segundo al sublocke, por cada repeticion del blocke, el sublocke se repetira 2 veces, como pueden ver en el ejemplo, para indicar un sublocke se debe anteponer el nombre del blocke "padre" seguido de un [/b]. [/b](punto) del mismo modo las variables del sublocke deberan ser:<?php require_once("MGTheme.php"); $theme = new MGTheme("./"); $theme->Cargar(array( 'sub_blockes' => 'sub_blockes.tpl') ); for($i=1;$i<=2;$i++) { $theme->AsignarBlocke('blocke', array( 'REPETICION' => $i); ); for($m=1;$m<=2;$m++) { $theme->AsignarBlocke('blocke.sub_blocke', array( 'REPETICION' => $m); ); } } $theme->Mostrar('sub_blockes'); ?>
Cita:
El resultado de este ejemplo seria:{nombre_blocke.nombre_subblocke.VARIABLE}
Cita:
Ejemplo uso de blockes:
Repeticion de blocke 1
Repeticion Sub-blocke 1
Repeticion Sub-blocke 2
Repeticion de blocke 2
Repeticion Sub-blocke 1
Repeticion Sub-blocke 2
Repeticion de blocke 1
Repeticion Sub-blocke 1
Repeticion Sub-blocke 2
Repeticion de blocke 2
Repeticion Sub-blocke 1
Repeticion Sub-blocke 2
Sin embargo, si programamos un sub-blocke dentro de otro:
Código:
Como se esperaria, al asignar el tercer blocke, no es de la forma:require_once("MGTheme.php"); $theme = new MGTheme("./"); $theme->Cargar(array( 'sub_blockes' => 'sub_blockes.tpl') ); for($i=1;$i<=2;$i++) { $theme->AsignarBlocke('blocke1', array( 'REPETICION' => $i); ); for($m=1;$m<=2;$m++) { $theme->AsignarBlocke('blocke1.blocke2', array( 'REPETICION' => $m); ); for($e=1;$e<=2;$e++) { $theme->AsignarBlocke('blocke2.blocke3', array( 'REPETICION' => $m); ); } } } $theme->Mostrar('sub_blockes');
Cita:
Sino que se toma solo el nombre del primer blocke superior, lo mismo pasa con las variables del tpl, esto lo hize por que me parecia engorroso poner tanto nombre de blocke =/ ,en la clase de phpBB o TemplatePower blocke1.blocke2.blocke3
si tienen que poner todos los blockes superiores.
Archivos Anidados
Los archivos anidados son archivos tpl, embebidos dentro de otros, por ejemplo, si tienes un header o un codigo html que quieres que aparesca en todas las paginass, puedes crear un tpl con ese codigo y aderirlo a las paginas, Ejemplo:
header.tpl
Código:
<b>MGTheme Class</b> by Marioly Garza
anidados.tpl
Código:
anidados.php<html> <head> </head> <body> {HEADER} <br /> Ejemplo uso de archivos anidados </body> </html>
Código:
1 .- Cargamos los dos archivos tpl.Siempre se deben definir indicativos diferentes!<?php require_once("MGTheme.php"); $theme = new MGTheme("./"); $theme->Cargar(array( // ( 1 ) 'anidados' => 'anidados.tpl', 'header' => 'header.tpl') ); $theme->AsignarVarArc('HEADER' => 'header'); // (2) $theme->Mostrar('anidados'); // (3) ?>
2.- Con el metodo AsignarVarArc asignamos el contenido del archivo a una variable, en este caso la variable "HEADER"
3.- Mostramos el resultado final, que seria:
Cita:
Por que el archivo "anidados.tpl" tiene dentro la variable "HEADER" la misma a la que asignamos el contenido de "header.tpl". MGTheme Class by Marioly Garza
Ejemplo uso de archivos anidados
Ejemplo uso de archivos anidados
Con esto termino, espero sea entendible para todos, igual dudas, criticas, sugerencias, postean :D ,Thanks