awi95
Member
Hallo,
ich arbeite gerade an einer neuen Homepage für meinen Clan.
Somit habe ich mir überlegt, einen Template Parser zu bauen, der variablen in boxen/sprachvariable oder if ersetzt.
Format ist: {_boxname}, {#sprachevar}, {?variable}
Nun scheitert dies aber daran, dass der parser es irgendwie falsch verarbeitet.
Der ersetzte text soll nämlich an php funktionen weiteregegeben werden, die das dann verarbeiten.
Bei Box wird z.b.: überprüft, ob die datei vorhanden ist und dann wir die php datei eingebunden.
Das Problem ist aber, dass er die Ersetzung zu früh macht, d.h. er ersetzt das ganze noch vor dem öffnenden <html> tag.
Hier mein template parser:
Beispiel-index.html:
Quellcode ausgabe am client:
Würde mich über hilfe freuen!
MfG
ich arbeite gerade an einer neuen Homepage für meinen Clan.
Somit habe ich mir überlegt, einen Template Parser zu bauen, der variablen in boxen/sprachvariable oder if ersetzt.
Format ist: {_boxname}, {#sprachevar}, {?variable}
Nun scheitert dies aber daran, dass der parser es irgendwie falsch verarbeitet.
Der ersetzte text soll nämlich an php funktionen weiteregegeben werden, die das dann verarbeiten.
Bei Box wird z.b.: überprüft, ob die datei vorhanden ist und dann wir die php datei eingebunden.
Das Problem ist aber, dass er die Ersetzung zu früh macht, d.h. er ersetzt das ganze noch vor dem öffnenden <html> tag.
Hier mein template parser:
Code:
<?php
include_once ("class.loadBox.php");
include_once ("class.loadLang.php");
class html {
public function loadBox($boxname) {
$path = "includes/boxes/box.".$boxname.".php";
if (file_exists($path)) {
include $path;
}else{
echo "Couldn't find box named '$boxname' !";
}
}
public function loadLang($langVar) {
$cur_lang = $_COOKIE['language'];
if (!isset($cur_lang)) {
$lang = "de";
}else{
$lang = $cur_lang;
}
$file = "language/lang.".$lang.".php";
if (!file_exists($file)) {
echo "Fatal Error: Language File doesn't exists!";
}else{
include $file;
echo $language[$langVar];
}
}
public function buildPage() {
include_once ("config.php");
$smysql = mysqli_connect($db['HOST'], $db['USER'], $db['PASS'], $db['DATABASE']);
$sql = "SELECT value FROM `".$db['DATABASE']."`.`config` WHERE name='default.template.path'";
$result = mysqli_query($smysql, $sql) OR die(mysqli_error());
$default_template = mysqli_fetch_array($result);
$default_template = $default_template['value'];
#$loadBox = new loadBox();
#$loadLang = new LoadLang()
$file = file_get_contents("templates/".$default_template."/index.html");
$replace = preg_replace("/{_(.*)}/e", "html::loadBox('$1')", $file);
$replace = preg_replace("/{#(.*)}/e", "html::loadLang('$1')", $replace);
echo $replace;
}
}
?>
Beispiel-index.html:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{PAGE_TITLE}</title>
</head>
<body>
<div id="wrapper">
<div id="header">
<div id="topBar">
</div>
<div id="logo">
</div>
<div id="boxBar">
<div id="lastWars">
{_lastwars}
</div>
<div id="nextWars">
{_nextwars}
</div>
<div id="lastForum">
{_lastforum}
</div>
</div>
</div>
</div>
</body>
</html>
Quellcode ausgabe am client:
Code:
<table width="100%" border="0"><tr><td width='20%'>vs. team3</td><td width='10%'>cs_office</td><td width='40%'>01-01-2011</td><td width='30%'>5on5</td></tr></table><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{PAGE_TITLE}</title>
</head>
<body>
<div id="wrapper">
<div id="header">
<div id="topBar">
</div>
<div id="logo">
</div>
<div id="boxBar">
<div id="lastWars">
</div>
<div id="nextWars">
</div>
<div id="lastForum">
</div>
</div>
</div>
</div>
</body>
</html>
Würde mich über hilfe freuen!
MfG