Hilfe bei Templatesystem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aussehen
bedingung
beispiel
datei
exit
flat
funktion
gutes tutorial
klasse
laden
load
muster
parsen
pattern
prinzip
schlsselwort
schwarzen stil
speicher
tutorial
berschrift
-
Hi,
ich w?rde gerne f?r meine Forumsoftware ein Templatesystem programmieren.
Doch habe ich leider nicht so wirklich eine Idee wie ich es aufbauen soll, bzw. wie es aussehen soll?
Kann mir einer von euch vielleicht ein Tipp geben?
Oder kennt einer von euch ein gutes Tutorial? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hmmm wie das Design ausehen soll???
Du kannst jetzt da verschieden Richtungen machen
wie zum Beispiel ein Forum im Schwarzen Stil, das hei?t Sternen Hintergrund usw. Da gibt es einnfach verschieden erichtungen. -
Ich gaube du hast mich nicht richtig verstanden.
Ich brauche ein System, denn dem Admin des Forums soll die M?glichkeit geboten werden neue Styles hochzuladen.
Daher ist ein System notwendig -
Ein Flat-Template-System in PHP k?nnte in etwa so gehen:
$temp_vars = array(
'var_name1' => $ersetzen_durch_das,
...
);
$in = file_get_contents($template_file);
$out = preg_replace('/\{(\w+?)\}/e', '$temp_vars["$1"]', $in);
print($out);
Ein passendes Template ($template_file) k?nnte dazu so aussehen:
<html>
<head>
<title>{ueberschrift}</title>
</head>
<body>
<div>
<h1>{ueberschrift}</h1>
<p>{fliesstext}</p>
</div>
</body>
</html>
Und das passende Array dazu:
$temp_vars = array(
'ueberschrift' => 'Hallo, und guten Abend!',
'fliesstext' => file_get_contents($fliesstext_1.txt)
);
Kompliziertere Template-Engines siehe mein Post in deinem anderen Thread zum Thema CMS (ich finde ihn gerade nicht ...).
-
Meine Template-Klasse ist vor kurzem fertig geworden. Basiert auf das Tutorial, welche ich oben schon gepostet hatte. (TheDragonMatser macht auch einfach geniale Codes. Ich habe irgenwie schon ein bisschen seinen Stil angenommen.^^' )
Bei dieser Klasse kann man halt ein Template Laden und ?berliefern, was durch welche Werte ersetzt werden soll. Dabei ist der Key des Arrays das Suchwort und der Wert, das, womit es ersetzt wird. Au?erdem sind halt If-Abfragen m?glich, mit denen man zum Beispiel ?berpr?fen kann, ob der User schon eingeloggt ist oder nicht. Je nachdem wird halt entschieden, ob z.B. ein Formular oder ein Privates Men? ausgegeben werden soll. Bitte kopiere die Klasse nicht einfach. Ich m?chte irgendwie auch nicht, dass meine Codes alle einfach so im Internet verstreut sind. -_-
<?php class TPLParser{ //Deklaration der Variablen var $template; // Variable zum Speichern des Templates var $vars = array(); //Der Key wird spaeter mit Value ersetzt //Konstruktor function TPLParser($vars = array(), $file, $path = 'templates'){ //Variablen abspeichern $this->vars = $vars; //Laden des Templates $this->load($path.'/'.$file.'.tpl'); //Parsen des Templates $this->parse(); } //Funktion zum Laden des Template-Files function load($file){ //Falls die Datei existiert, wird sie Zeilenweise in ein Array gelesen if(file_exists($file)) { $this->template = @implode('', @file($file)); } else { //Andernfalls wird ein Fehler ausgegeben print "Die Datei $file.tpl existiert nicht!"; exit; } } //Funktion zum Parsen des Templates function parse(){ //Variablen fuer das Parsen initialisieren $search = array(); $replace = array(); //Uebergebene Variablen in die Masken einlesen foreach($this->vars as $key => $value) { $search[] = '{'.$key.'}'; $replace[] = $value; } //Ersetzen der Schluesselwoerter und gleichzeitiges abspeichern der Templates $this->template = str_replace($search, $replace, $this->template); //Loeschen der alten Suchmuster unset($search); unset($replace); //Suchmuster fuer If-Bedingungen und Kommentare $search = array( //Muster fuer If-Bedingungen wie z.B.: //<if condition="{condition}"><then>dies</then><else>das</else></if> '`<if\s*condition=(["\'])(.*?)\\1>\s*<then>(.*?)</then>\s*<else>(.*?)</else>\s*</if>`ies', //Muster fuer Kommentare wie // <!-- Kommentar --> '`<\!\-\-(.*?)\-\->`s' ); $replace = array( //Macht aus der Bedingung folgendes //$condition ? $true : $false; '$this->doIf(\\2, "\\3", "\\4")', //Loescht die Kommentare '' ); $this->template = preg_replace($search, $replace, $this->template); } function doIf($condition, $true, $false) { return $condition ? $true : $false; } } ?>
-
Danke Aloplex, mit deinem Code werde ich es wohl hin bekommen.
Aber was bedeute beim pre_replace dieser COde: '/\{(\w+?)\}/e'
danke -
http://www.php.net/manual/de/reference.pcre.pattern.syntax.php
Das Teil sucht grob gesagt W?rter zwischen geschweiften Klammern... -_-
Edit:
@Unter mir
Ja! -.-
Beitrag ge?ndert am 11.05.2006 07:05 von i-spacke -
Und er setzt dann $temp_vars["$1"] ein, wenn er eine geschweife klammer gefunden hat?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage