Nabend zusammen,
ich habe folgendes Problem mit meiner eigenen "Template-Engine":
Hier erstmal die target Seite {TITLE} (mit dem "Fehler")
Der Fehler ist offensichtlich. Die Tabelle mit den Logs ist nicht im Content-Bereich.
Meine Frage: Wie kommt das, dass die über dem Layout ist?
Normale Strings kann er anzeigen wie {DATUM} z.B.
Würde mich freuen wenn jemand einen Einfall für die Lösung hat.
ich habe folgendes Problem mit meiner eigenen "Template-Engine":
Hier erstmal die target Seite {TITLE} (mit dem "Fehler")
Der Fehler ist offensichtlich. Die Tabelle mit den Logs ist nicht im Content-Bereich.
Meine Frage: Wie kommt das, dass die über dem Layout ist?
Normale Strings kann er anzeigen wie {DATUM} z.B.
Würde mich freuen wenn jemand einen Einfall für die Lösung hat.
PHP-Code:
# tpl.php
<?php
session_start();
include('inc/inc.config.php');
include('lib/class.template.php');
include('lib/class.log.php');
$class1log = new Logging();
$tpl = new Template;
$tpl->makeFile('tpl/template.html');
$tpl->makeReplace('TITEL','Header');
$tpl->makeReplace('LOGINNAME', $tpl->showLoginname());
$tpl->makeReplace('DATUM', $tpl->showDate());
$tpl->makeReplace('CONTENT', $class1log->showLogs());
echo $tpl->compileTemplate();
?>
PHP-Code:
# class.template.php
<?php
class Template {
var $template;
var $tpltag = array();
var $output;
function makeFile($file){
if (file_exists($file)) {
$this->template = '';
$fp = fopen ($file, 'r');
while(!feof($fp)){
$this->template .= fgets ($fp, 128);
}
fclose ($fp);
} else {
return false;
}
}
function makeReplace($name, $content){
$this->tpltag[$name] = $content;
}
function compileTemplate(){
if(!$this->output)
$this->output = $this->template;
$keys = @array_keys($this->tpltag);
$status = 0;
$start = "{";
$end = "}";
foreach ($keys as $key){
$this->output = preg_replace('/'.$start.$key.$end.'/', $this->tpltag[$key], $this->output);
if (preg_match('/'.$start.$key.$end.'/', $this->output)) {
$status = 1;
}
}
if ($status) {
$this->compileTemplate();
}
return $this->output;
}
function showLoginname(){
$sql = "SELECT vorname, nachname FROM user WHERE email='".$_SESSION['login_email']."'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
return $row['vorname']." ".$row['nachname'];
}
function showDate(){
return date("H:i")." Uhr am ".date("m.d.Y");
}
}
?>
PHP-Code:
# template.html
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'xhtml11.dtd'>
<html>
<head>
<link rel='stylesheet' type='text/css' href='style.css' media='all' />
<title>{TITLE}</title>
</head>
<body>
<div class='container'>
<div class='headleft'><img src='image/top-links.jpg' alt='' width="6" height="19" /></div>
<div class='headmiddle'>Logged in as <a href='#' class='headmiddlelink'>{LOGINNAME}</a>
<span class="headmiddle1">|</span> Time: <span class="headmiddle2">{DATUM}</span>
<span class="headmiddle1">|</span>
<span class="headmiddle2"><a href='logout.php' class='headmiddlelink'>Logout</a></span>
</div>
<div class='headright'><img src='image/top-rechts.jpg' alt='' width="6" height="19" /></div>
<div class='headbuttom'></div>
<div class='header'></div>
<div class='headred'></div>
<div class='headend'></div>
<div class='content'>
<div class='navi'>
<div class='navimain'><img src='image/main_menu.jpg' width='191' height='43' alt='' /></div>
<div class='navirot'><a href='?menu=close' class='navirotlink'> News</a></div>
<div class='navisub'> Hinzufuegen</div>
<div class='navisub'> Loeschen</div>
<div class='navinorm'><a href='getlogs.php'> Log</a></div>
</div>
<div class='context'>
<div class='con1'></div>
<div class='con2'></div>
<div class='con3'></div>
<div class='con4'>
<input class='searchinput' type='text' name='search' value='Ihr Suchebegriff...' />
<input name='searchbutton' type='submit' class='searchbutton' value='Senden' />
</div>
<div class='con5'></div>
<div class='contextmitte'>{CONTENT}</div>
</div>
</div>
</div>
</body>
</html>

ansonsten wäre das eine Aufgabe die ich später in Angriff nehmen werde. Trotzdem danke für deine Antwort.
Kommentar