Template System

  • Themenstarter Themenstarter Bgag
  • Beginndatum Beginndatum
Ok es funktioniert hervorragend. Der Fehler war relativ simpel. Es wird ja noch keine Variable content oder nun section übergeben, wenn man die seite so aufruft drum nur eine kurze if-Abfrage und das ganze hat sich. Vielen Dank nochmal an meine netten Helfer! Hier nur nochmal den Code falls jemand anders den noch verwenden will:
PHP:
<?php 

    /* Deklarieren von Inhalten, die auf PHP basieren und immer für bestimmte Platzhalter eingesetzt werden müssen */  
    $lastchange = filemtime(basename($_SERVER['PHP_SELF'])); 
    $last_change = date("d.m.Y H:i", $lastchange); 
    $copyright = date("Y"); 
    $url = $_SERVER['PHP_SELF']; 



/* Die Klasse Template*/ 
class template { 

    private $t;
    private $platzhalter;  
         
    /* Template anlegen */ 
    public function __construct($template) {
    $realtemplate = file_get_contents($template); 
    $this->t = $realtemplate; 
    } 
     
    /* Den section laden */ 
    public function loadsection($section) { 
    ob_start(); 
    include $section; 
    $newsection = ob_get_contents(); 
    ob_end_clean(); 
    return $newsection; 
    } 
     
    /* Den einzelnen Platzhaltern ihre Inhalte zuweisen */  
    public function setvalue($tag, $value)   {
   $complete_tag = '{'.$tag.'}';
   $this->platzhalter[$complete_tag] = $value;
   } 
     
   /* Platzhalter im Template finden, ersetzen und letztendlich das ganze ausgeben*/ 
   function parsetemplate()   {
   echo str_replace(array_keys($this->platzhalter), array_values($this->platzhalter), $this->t); // <--
   }  

} 


$t = new Template("template.tpl"); 
$t->setvalue( "change" , $last_change ); 
$t->setvalue( "server" , $url ); 
$t->setvalue( "copy" , $copyright );
if(isset($_GET['section']))   {
$t->setvalue( "section" ,  $t->loadsection($_GET['section']));
}   else   {
$t->setvalue( "section" ,  $t->loadsection('section_main.php'));
}
$t->parsetemplate(); 

?>

Die passenden Links dazu sehen so aus:
HTML:
<a href="{server}?section=section_blubb.php">BLUBB</a>
MfG, Andy
 
Und jetzt nocheinmal für den Vollidioten Radiate^^, wo liegt der Unterschied zwischen seiner als der hier besprochenen Methode bzw. Variante und meiner?
Mal davon abgesehen das die Platzhalter etwas kürzer sind.^^

Meine:

<?php echo $lang['hallo']; ?>

in HTML:

Hallo
 
Zurück