schleckerbeck
Erfahrenes Mitglied
Hi,
habe für mein CMS ein Template System a lá http://www.developers-guide.net/forums/684,php-ein-eigenes-templatesystem-schreiben gebastelt, was auch soweit ganz ordentlich funktioniert (btw: Was haltet Ihr generell davon?)
Doch leider steh ich jetzt vor dem Problem, dass ich für mein CMS verschiedene Komponenten einbinden muss. Ich hätte das ganze einfach per include Befehl bewerkstelligt, was jedoch in Verbindung mit dem Template System schwierig wären könnte, da dieses ja nur Platzhalter wie {content} ersetzt.
Eine Möglichkeit wäre natürlich die komplette Ausgabe der Komponenten in einer Variable zu speichern, und die dann der Template Engine zu übergeben. Finde diese Lösung jedoch nicht sehr elegant.
Eine andere Möglichkeit wäre noch die Template Ausgabe an einer bestimmten Stelle zu unterbrechen, den include Befehl in der PHP Datei auszuführen, und dann mit der Template Ausgabe weiter zu machen. Jedoch gefällt mir auch diese Lösung nicht 100%ig.
Hier mal zum besseren Verständnis der Quellcode:
template.tpl
Und dort werden alle Platzhalter { } von der Template Klasse ersetzt.
Hier die PHP Datei:
Darum meine Frage: Wie könnte man das ganze lösen, ohne die Trennung von PHP und Template komplett auszuhebeln?
Danke,
sc.
PS: Ich bin so frei und Verweise nochmal auf diesen Thread hier, da mir das ebenfalls noch Kopfzerbrechen bereitet: http://www.tutorials.de/forum/php/293645-class-test-extends-db-funktioniert-nicht.html
habe für mein CMS ein Template System a lá http://www.developers-guide.net/forums/684,php-ein-eigenes-templatesystem-schreiben gebastelt, was auch soweit ganz ordentlich funktioniert (btw: Was haltet Ihr generell davon?)
Doch leider steh ich jetzt vor dem Problem, dass ich für mein CMS verschiedene Komponenten einbinden muss. Ich hätte das ganze einfach per include Befehl bewerkstelligt, was jedoch in Verbindung mit dem Template System schwierig wären könnte, da dieses ja nur Platzhalter wie {content} ersetzt.
Eine Möglichkeit wäre natürlich die komplette Ausgabe der Komponenten in einer Variable zu speichern, und die dann der Template Engine zu übergeben. Finde diese Lösung jedoch nicht sehr elegant.
Eine andere Möglichkeit wäre noch die Template Ausgabe an einer bestimmten Stelle zu unterbrechen, den include Befehl in der PHP Datei auszuführen, und dann mit der Template Ausgabe weiter zu machen. Jedoch gefällt mir auch diese Lösung nicht 100%ig.
Hier mal zum besseren Verständnis der Quellcode:
template.tpl
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>{$title}</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta name="robots" content="ALL">
<meta name="author" content="{$author}">
<meta name="publisher" content="{$publisher}">
<meta name="copyright" content="{$copyright}">
<meta name="keywords" content="{$keywordsde}" lang="de">
<meta name="keywords" content="{$keywordsen}" lang="en">
<meta name="description" content="{$descriptionde}" lang="de">
<meta name="description" content="{$descriptionen}" lang="en">
</head>
<body>
{$menu}
<div id="content">{$content}</div> <!== Hier müsste der Content stehen ==>
</body>
</html>
Und dort werden alle Platzhalter { } von der Template Klasse ersetzt.
Hier die PHP Datei:
PHP:
// Das Templatesystem einbinden
$tpl = new Template();
$tpl->load("index.tpl");
$tpl->meta(); // Hier werden die Meta Daten ersetzt
$tpl->assign("content", $content); // Hier müsste ich irgendwie den include Befehl reinbekommen
$tpl->out();
Darum meine Frage: Wie könnte man das ganze lösen, ohne die Trennung von PHP und Template komplett auszuhebeln?
Danke,
sc.
PS: Ich bin so frei und Verweise nochmal auf diesen Thread hier, da mir das ebenfalls noch Kopfzerbrechen bereitet: http://www.tutorials.de/forum/php/293645-class-test-extends-db-funktioniert-nicht.html