Hallo Leute!
Momentan benutze ich Smarty. Da ich nicht so viele Funktionen brauche, möchte ich nun meine eigene kleine Template-Engine schreiben - nichts großes!
Funktionen:
- Tags ersetzen
- Schleifen
Ich hab jetzt dieses Tutorial durch:
http://www.codewalkers.com/c/a/Displ...System-in-PHP/
Leider wird da nicht erklärt wie man Schleifen einbaut.
Wie würdet ihr das Lösen?
Hier der bisherige Code (Quelle: Tutorial):
Danke!
Momentan benutze ich Smarty. Da ich nicht so viele Funktionen brauche, möchte ich nun meine eigene kleine Template-Engine schreiben - nichts großes!
Funktionen:
- Tags ersetzen
- Schleifen
Ich hab jetzt dieses Tutorial durch:
http://www.codewalkers.com/c/a/Displ...System-in-PHP/
Leider wird da nicht erklärt wie man Schleifen einbaut.
Wie würdet ihr das Lösen?
Hier der bisherige Code (Quelle: Tutorial):
PHP-Code:
// template.class.php
class Page
{
var $page;
function Page($template = "template.html") {
if (file_exists($template))
$this->page = join("", file($template));
else
die("Template file $template not found.");
}
function parse($file) {
ob_start();
include($file);
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
function replace_tags($tags = array()) {
if (sizeof($tags) > 0)
foreach ($tags as $tag => $data) {
$data = (file_exists($data)) ? $this->parse($data) : $data;
$this->page = eregi_replace("{" . $tag . "}", $data,
$this->page);
}
else
die("No tags designated for replacement.");
}
function output() {
echo $this->page;
}
}
PHP-Code:
// test.php
require_once("template.class.php");
$page = new Page("template.htm");
$page->replace_tags(array(
"title" => "HOME",
"descript" => "Welcome to my website!",
"main" => "dat/index.dat",
"menu" => "dat/menu.dat",
"left" => "dat/submenu.dat",
"right" => "dat/right.dat",
"footer" => "dat/footer.php"
));
$page->output();
Code:
// template.htm <html> <head> <title>{title}</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" href="css/mystyles.css" type="text/css" /> </head> <body> <div id="banner"> <img src="images/logo.png" alt="Main Logo" /> <div id="menubar"> {menu} </div> </div> <div id="leftcol"> {left} </div> <div id="rightcol"> {right} </div> <div id="main"> {main} </div> <div id="footer"> {footer} </div> </body> </html>
Kommentar