Ver Mensaje Individual
  #9 (permalink)  
Antiguo 06/10/2003, 15:18
Avatar de ferny
ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Hola:
No es tanto como una obra maestra, pero funciona, que es lo importante
Poner todo aquí sería muy largo, asi que sólo voy a poner el archivo de la clase y el archivo al que llamamos por URL. Luego vereis una serie de constantes e includes de otros archivos que contienen datos, variables, funciones, constantes... pero no los pongo pq necesitaría varios posts

class.php
Código PHP:
<?
class Template {
    var 
$_variables = array();
    var 
$_contenido "";

    
// Función útil para asignar variables determinadas
    
function asignar($variable,$valor){
        
$this -> _variables[$variable] = $valor;
     }

    
// Asignamos todas aquellas variables comunes a todos los archivos (plantillas y contenidos)
    
function rellenar(){
        
$this -> asignar('server',SERVER); # Servidor
        
$this -> asignar('foro',FORO); # Dirección del foro
        
$this -> asignar('email_admin',EMAIL_ADMIN); # Email administrativo
        
$this -> asignar('usuarios_activos',U_ACTIVOS); # Usuarios activos
        
$this -> asignar('fecha',fecha()); # Fecha actual

        
$gzip_activado = (GZIP_ON_OFF) ? "activada" "desactivada";
        
$this -> asignar('gzip_on_off',$gzip_activado); # Compresión GZIP
    
}

    
// Añadimos contenidos a partir del fichero $file y lo asignamos a $variable
    
function archivo($variable,$file) {
        
$this -> archivo = new Template# Creamos un objeto para los contenidos
        
$this -> archivo -> rellenar(); # Definimos variables comunes a todo
        
extract($this -> archivo -> _variables); # Asignamos variables comunes
        
$this -> archivo -> parsear($file); # Sustituimos variables comunes
        
$this -> archivo -> limpiar(); # Eliminamos variables temporales
        
$this -> asignar($variable,$this -> archivo -> _contenido); # Asignamos la variable buscada
    
}

    
// Sustituimos las variables en determinado archivo
    
function parsear($file) {
        
$this -> asignar('tiempo_creacion',tiempo()); # Asignamos variable de tiempo de creación
        
$this -> rellenar(); # Definimos variables comunes
        
extract($this -> _variables); # Asignamos variables comunes
        
ob_start(); # Iniciamos buffer para poder coger los contenidos
        
include($file); # Metemos la plantilla, ya con variables sustituidas
        
$this -> _contenido ob_get_contents(); # Cogemos el contenido
        
ob_end_clean(); # Eliminamos buffer
        
$this -> limpiar(); # Eliminamos variables temporales
    
}

    
// Borramos las variables temporales
    
function limpiar(){
        unset(
$this -> _variables);
    }

    
// Mostramos la página, en función de si tenemos compresión GZIP o no
    
function mostrar($gzip) {
        if (
$gzip) {
            
ob_start();
            include(
PATH.'includes/gzip.php');
            echo 
$this -> _contenido;
            new 
gzip();
        } else {
            echo 
$this -> _contenido;
        }
    }
}
?>
pagina.php
Código PHP:
<?
// Definimos PATH y metemos archivo de configuración
define(PATH,"./");
include(
PATH.'includes/config.inc.php');

// Creamos la página
$tpl = new Template;

// Asignamos título de la página
$tpl -> asignar('titulo','Esto es el título');

// Asignamos contenidos desde archivo
$tpl -> archivo('contenido','contenido.php');
$tpl -> archivo('scroll',PATH.'includes/scroll.php');

// Sustituimos variables en la plantilla
$tpl -> parsear(PATH.'includes/plantilla.php');

// Mostramos variables
$tpl -> mostrar(GZIP_ON_OFF);
?>
Como podeis suponer, faltan muchísimas cosas pero no puedo poner todo aquí... Ah, por cierto, la clase GZIP definida en gzip.php es la clase de compresión que se encuentra en xergio.net
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.