Foros del Web » Programando para Internet » PHP »

Se puede ponerle include a este sistema de templates?

Estas en el tema de Se puede ponerle include a este sistema de templates? en el foro de PHP en Foros del Web. Este es un class para templates, alguien sabe como ponerle para que acepte la funcion include("rutadelarchivo");: Código PHP: <? class  ePiel  {      # * Cargamos las plantillas deseadas y las almacenamos      ...
  #1 (permalink)  
Antiguo 02/11/2006, 17:15
Avatar de renzoster  
Fecha de Ingreso: mayo-2006
Ubicación: Lima
Mensajes: 63
Antigüedad: 18 años
Puntos: 0
Se puede ponerle include a este sistema de templates?

Este es un class para templates, alguien sabe como ponerle para que acepte la funcion include("rutadelarchivo");:

Código PHP:
<?
class ePiel {
    
# * Cargamos las plantillas deseadas y las almacenamos
    
function cargar($plantillas) {
        foreach(
$plantillas as $plantilla_nom => $plantilla_arc) {
            
$this->plantillas[$plantilla_nom] = $plantilla_arc ;
        }
    }
    
# * Almacenamos las variables que no están dentro de bloques
    
function variable($variable,$valor) {
        
$this->variables[$variable] = $valor ;
    }

    function 
variables($variables) {
        foreach(
$variables as $variable => $valor) {
            
$this->variables[$variable] = $valor ;
        }
    }
    
# * Almacenamos las variables en bloques
    
function variables_bloque($bloques,$variables = array()) {
        
# Si $bloques es el bloque principal se le agregan las variables junto con una nueva iteración
        
if(!strpos($bloques,'.')) {
            
$this->variables_bloque[$bloques][] = $variables ;
        }
        else {
            
# Si existen bloques anidados, se agregan las variables de la siguiente forma:
            # $this->variables_bloque['bloque1'][num_iteraciones1]['bloque2'][num_iteraciones2]...['ultimo_bloque'][] = $variables
            
$bloques explode('.',$bloques) ;
            
$total count($bloques) - ;
            
$pre_variable '$this->variables_bloque' ;
            for(
$i $i $total $i++) {
                
$pre_variable .= '[\''.$bloques[$i].'\']' ;
                
# Se obtienen las iteraciones de cada bloque
                
eval('$num_iteraciones = count('.$pre_variable.') - 1 ;') ;
                
$pre_variable .= '['.$num_iteraciones.']' ;
            }
            eval(
$pre_variable.'[$bloques[$total]][] = $variables ;') ;
        }
    }
    
# * Construimos la variable $this->variables_bloque (para uso exclusivo en mostrar())
    # La variable queda como sigue: $this->variables_bloque['bloque1'][$i_bloque1]['bloque2'][$i_bloque2]...['variable']
    
function pre_variable($bloques,$variable '') {
        
# Eliminamos el último punto agregado
        
$bloques rtrim($bloques,'.') ;
        
$bloques explode('.',$bloques) ;
        
$total count($bloques) - ;
        
$pre_variable '$this->variables_bloque' ;
        for(
$i $i $total $i++) {
            
$pre_variable .= '[\''.$bloques[$i].'\'][$i_'.$bloques[$i].']' ;
        }
        
$pre_variable .= '[\''.$bloques[$total].'\']' ;
        if(
$variable) {
            
$pre_variable .= '[$i_'.$bloques[$total].'][\''.$variable.'\']' ;
        }
        return 
$pre_variable ;
    }
    
# * Procesamos la plantilla haciendo las sustituciones necesarias y devolviendo el resultado
    
function mostrar($plantilla_nom,$insertar 0) {
        
$resultado '' ;
        
$contenido trim(file_get_contents($this->plantillas[$plantilla_nom])) ;
        
# Reemplazar \ con \\ y ' con \' (para que no provoquen error al aplicar eval())
        
$contenido str_replace('\\','\\\\',$contenido) ;
        
$contenido str_replace('\'','\\\'',$contenido) ;
        
# Sustituimos las variables que no están dentro de bloques
        
$contenido preg_replace('/{#([\w_]+)}/','\'.(@file_get_contents($this->variables[\'$1\']) ? $this->variables[\'$1\'] : \'\').\'',$contenido) ;
        
$contenido preg_replace('/{([\w_]+)}/','\'.(isset($this->variables[\'$1\']) ? $this->variables[\'$1\'] : \'\').\'',$contenido) ;
        
# Sustituimos las variables que se encuentran dentro de bloques
        
preg_match_all('/{(([\w_]+\.)+)([\w_]+)}/U',$contenido,$a) ;
        
$total count($a[3]) ;
        for(
$i $i $total $i++) {
            
$pre_variable $this->pre_variable($a[1][$i],$a[3][$i]) ;
            
$pre_variable '\'.(isset('.$pre_variable.') ? '.$pre_variable.' : \'\').\'' ;
            
$contenido str_replace($a[0][$i],$pre_variable,$contenido) ;
        }
        
$lineas explode("\n",$contenido) ;
        
$total count($lineas) ;
        for(
$i $i $total $i++) {
            
# Esta variable servirá para identificar si existen bloques anidados
            # Ejemplo: 'bloque1.bloque2.bloque3. ... .bloque_final.'
            
static $bloques '' ;
            
$lineas[$i] = rtrim($lineas[$i]) ;
            if(
strpos($lineas[$i],'[blq ') !== false && preg_match('/\[blq ([\w_]+)\]/',$lineas[$i],$a)) {
                
# Se agrega el bloque actual a la variable $bloques
                
$bloques $bloques.$a[1].'.' ;
                
$pre_variable $this->pre_variable($bloques) ;
                
$lineas[$i] = '$total_'.$a[1].' = isset('.$pre_variable.') ? count('.$pre_variable.') : 0 ;'."\n" ;
                
$lineas[$i] .= 'for($i_'.$a[1].' = 0 ; $i_'.$a[1].' < $total_'.$a[1].' ; $i_'.$a[1].'++) {' ;
            }
            elseif(
strpos($lineas[$i],'[/blq ') !== false && preg_match('/\[\/blq ([\w_]+)\]/',$lineas[$i],$a)) {
                
$lineas[$i] = '}' ;
                
# Se quita el bloque actual a la variable $bloques
                
$bloques ereg_replace($a[1].'\.$','',$bloques) ;
            }
            else {
                
$lineas[$i] = '$resultado .= \''.$lineas[$i].'\'."\n" ;' ;
            }
        }
        eval(
implode("\n",$lineas)) ;
        
$resultado preg_replace('/\n\n+/','',trim($resultado)) ;
        
# Si $insertar es 1 el resultado se devuelve para poder insertarlo en otra plantilla
        
if($insertar != 1) {
            echo 
$resultado ;
        }
        else {
            return 
$resultado ;
        }
    }
}
?>
  #2 (permalink)  
Antiguo 03/11/2006, 04:30
 
Fecha de Ingreso: junio-2004
Mensajes: 3
Antigüedad: 19 años, 10 meses
Puntos: 0
prueba lo siguiente
<?php
include ("archiv");
include ("fuente_plantillas");

...
?>

Con esto dentro de fuente_plantillas será visible lo que hayas definido público en archiv

Salu2...3...4...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:58.