Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/02/2006, 03:08
marioly
 
Fecha de Ingreso: febrero-2006
Mensajes: 4
Antigüedad: 18 años, 2 meses
Puntos: 0
MGTheme Class (clase para manejo de archivos template)

Intro

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:
 
<html>
   <head>
	<title>{TITULO}</title>
   </head>
   <body>
		 Ejemplo MGTheme, desarrollado por <b> {AUTOR} </b>
   </body>
</html>
index.php
Código:
<?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 )

?>
1.- Incluimos el archivo php que contiene la clase
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:
$theme->AsignarVar('NOMBRE_VAR', 'texto valor');
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.

En este ejemplo el resultado seria una pagina html con titulo "Ejemplo clase MGTheme" y con contenido:
Cita:
Ejemplo MGTheme, desarrollado por Marioly
facil ha?

Uso de blockes
El uso de blockes es muy util, sobre todo usados en los bucles php. Ejemplo:

blockes.tpl
Código:
 
<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>
blockes.php
Código:
<?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'); 

?>
1.- Como vimos en el ejemplo de arriba, tenemos que indicar el archivo que sera utilizado, con el metodo "Cargar".
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:
<!-- BEGIN nombre_blocke -->
y terminar:
Cita:
<!-- END nombre_blocke -->
y a sus variables debe anteponerse el nombre del blocke seguido de un punto:
Cita:
{nombre_blocke.VAR}
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.

El resultado del ejemplo seria:
Cita:
Ejemplo uso de blockes:
Repeticion de blocke 1
Repeticion de blocke 2
Repeticion de blocke 3
Repeticion de blocke 4
Repeticion de blocke 5
Uso de Sub-Blockes
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:
 
<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>
sub_blockes.php
Código:
<?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'); 

?>
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:
Cita:
{nombre_blocke.nombre_subblocke.VARIABLE}
El resultado de este ejemplo seria:
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

Sin embargo, si programamos un sub-blocke dentro de otro:
Código:
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');
Como se esperaria, al asignar el tercer blocke, no es de la forma:
Cita:
blocke1.blocke2.blocke3
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
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:
 
<html>
   <head>
   </head>
   <body>
		{HEADER} <br />
		Ejemplo uso de archivos anidados
   </body>
</html>
anidados.php
Código:
<?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)

?>
1 .- Cargamos los dos archivos tpl.Siempre se deben definir indicativos diferentes!
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:
MGTheme Class by Marioly Garza
Ejemplo uso de archivos anidados
Por que el archivo "anidados.tpl" tiene dentro la variable "HEADER" la misma a la que asignamos el contenido de "header.tpl".

Con esto termino, espero sea entendible para todos, igual dudas, criticas, sugerencias, postean :D ,Thanks

Última edición por marioly; 13/04/2006 a las 15:09