Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/06/2009, 21:05
Avatar de MilkZoft
MilkZoft
 
Fecha de Ingreso: junio-2009
Ubicación: Colima, México
Mensajes: 35
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: mostrar diferentes diseños de una misma html mediante php

Hola piner, te mostraré como lo hago yo con mi Framework/CMS que estoy desarrollando llamado "ZanPHP", primero que nada debes tener un poco de conocimiento sobre patrones de diseño en PHP5, pero es algo así:

1. Primero la estructura del sistema es algo así:
  • applications
  • core
  • lib
  • index.php

2. Dentro de lib tengo una carpeta llamada "themes" y dentro de ella tengo las carpetas de los diseños que quiero cambiar ("swichear") y cada carpeta tiene archivos html o php.

3.- Tengo una clase de templates para hacer los cambios y es algo así:

Código PHP:
class Templates {
    public 
$Text;
    public 
$Theme;
    public 
$FullScreen false;
    private 
$Vars = array();    
    private 
$Registry;
    
    public function 
__construct($Registry) {
        
$this->Registry $Registry;
    }    
    
    public function 
Theme($Theme) {
        
$this->Theme $Theme;
    }

public function 
Load($Template$Path null$View "No"$Direct false) {
        global 
$Registry;
        
        if(
$View == "No") {
            
$Template Lib Slash Themes Slash $this->Theme Slash $Template;
        } elseif(isset(
$View)) {
            
$Template Applications Slash $View Slash Templates Slash $Template;
        }
        
        if(
$Path == true) return $Template;            
        
        if(
$Direct == true) {
            foreach (
$this->Vars as $Key => $Value) {
                $
$Key $Value;
            }                        
            
            include (
$Template); 
            return 
true;
        }                
        
        if(!
file_exists($Template)) die(__(_("Error 404: Theme Not Found: ")) . $Template);
        else {
            foreach (
$this->Vars as $Key => $Value) {
                $
$Key $Value;
            }                
            
            include (
$Template);    
        }        
    } 
bueno no entrare en detalle en el código debido a que debería explicarte varias cosas de mi sistema y ese no es el punto, pero básicamente le paso como parámetro la plantilla (html o php) verifica si es una vista o un theme (es propio del ZanPHP) y en caso de que sea php le da valor a cada variable y finalmente incluye la plantilla.

Para mandarlo a llamar en mis controladores (de cada aplicación), primero defino cual es mi theme a utilizar y luego le paso las plantillas...

Código PHP:
        //: Set Theme.
        
$this->Registry["Templates"]->Theme(WebTheme);
                                                
        
//: Load Header        
        
$this->Registry["Templates"]->Load("header.php"); 
Pasandome variables y sus respectivos valores:

Código PHP:
                    $this->Registry["Templates"]->Set("Records"$this->Posts);
                    
$this->Registry["Templates"]->Set("Pagebreak"true);
                    
$this->Registry["Templates"]->Set("Content"$this->Registry["Templates"]->Load("post.php"true"blog"));
                    
$this->Registry["Templates"]->Load("content.php"); 
y pues básicamente así funciona, no puedo profundizar más debido a que mi sistema aún no esta terminado y aún no he pensado si lo liberare como open source o no, pero si tienes dudas puedes hacerme cualquier consulta, un saludo.