PHP beginner |
|
Hallo,
ik ben een klein template systeempje aan het maken, layout wordt weergegeven en tags worden vervangen, alleen, wanneer ik een pagina include, en op die pagina staat php-code, dan wordt deze php-code in de bron afgedrukt, en dus niet gebruikt.
De klasse:
<?php
class layout {
public $dir = ''; // de dir waarin de template-bestanden staan
public $layout; // de layoutpagina
public $basic = 'tmp.html'; // de standaardlayout indien de opgegeven layoutpagina niet bestaat
function __construct($layout) {
if(file_exists($this->dir.$layout)) {
$this->layout = implode(file($layout));
} else {
$this->layout = implode(file($this->dir.$this->basic));
}
}
public function parseTags($pageVars) {
if(sizeof($pageVars) > 0) {
foreach($pageVars as $pageTag => $value) {
$this->layout =eregi_replace('@{'.$pageTag.'}',$value,$this->layout);
}
}
}
public function fillData($page) {
if(file_exists($page)) {
$this->layout .= implode('',file($page));
} else {
}
}
public function output() {
return $this->layout;
}
}
?>
<?php class layout { public $dir = ''; // de dir waarin de template-bestanden staan public $layout; // de layoutpagina public $basic = 'tmp.html'; // de standaardlayout indien de opgegeven layoutpagina niet bestaat function __construct($layout) { } else { $this->layout = implode(file($this->dir.$this->basic)); } } public function parseTags($pageVars) { foreach($pageVars as $pageTag => $value) { $this->layout =eregi_replace('@{'.$pageTag.'}',$value,$this->layout); } } } public function fillData($page) { } else { } } public function output() { return $this->layout; } } ?>
Een willekeurige pagina:
<?php
include_once('tmp.klasse.php');
$layout = new layout('tmp.html');
$layout->parseTags($pageVars = array(
'PageTitle' => 'DIT IS EEN TEST',
'PageContent' => $layout->fillData('testphp.php'),
'PageFooter' => $layout->fillData('footer.html'),
));
echo $layout->output();
?>
<?php include_once('tmp.klasse.php'); $layout = new layout('tmp.html'); $layout->parseTags($pageVars = array( 'PageTitle' => 'DIT IS EEN TEST', 'PageContent' => $layout->fillData('testphp.php'), 'PageFooter' => $layout->fillData('footer.html'), )); ?>
|