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>

Moderator
Comment