Vollständige Version anzeigen : [PHP] Arbeiten mit Templates


Murdoc
13.08.2007, 15:06

du wolltest schon immer mal wissen wie man in php sauber mit templates arbeitet? dann bist du hier richtig.

zu beginn legen wir dafür erstmal einen neuen ordner an (name egal) wo später die templates drinnen landen.
dann brauchen wir eine funktion die diese templates aus dem ordner rausholt, das ganze machen wir in einer neuen klasse, damit das schön übersichtlich bleibt.

also wir legen eine neue klasse an namens 'tpl':

<?php
class tpl {

}
?>

bis jetzt nix dabei :)
damit das ganze dynamisch bleibt geben wir auch gleich einen ordner mit an, damit man zwischen verschiedenen layouts wählen kann und das machen wir so:

<?php
class tpl {
var $dir;
}
?>

jetzt ist in der ganzen klasse die variable $dir vorhanden

jetzt brauchen wir eine funktion die diesen ordner belegt, am besten man macht das als constructor
(einer funktion mit dem selben namen wie die klasse):

<?php
class tpl {
var $dir;

public function tpl($dir = '') {
if($dir == '') $dir = ";/";
else {
if($dir{0} != ";") $dir = ";$dir";
elseif($dir{1} != '/') $dir = ";/$dir";

if($dir{strlen($dir)-1} != '/') $dir ;= '/';

if(is_dir($dir)) $this->dir = $dir;
else exit('template dir not found');
}
}
}
?>

wie man sieht wartet diese funktion auf den ordernamen, falls der nicht angegeben wurde wird der momentane ordner genommen also der in dem sich das script befindet oder includiert wurde.

so, aber jetzt brauchen wir noch eine funktion um die templates zu laden, die sieht so aus:

<?php
class tpl {
var $dir;

public function tpl($dir = '') {
if($dir == '') $dir = ";/";
else {
if($dir{0} != ";") $dir = ";$dir";
elseif($dir{1} != '/') $dir = ";/$dir";

if($dir{strlen($dir)-1} != '/') $dir ;= '/';

if(is_dir($dir)) $this->dir = $dir;
else exit('template dir not found');
}
}

public function get($name) {
if(file_exists($this->dir;$name;";html")) {
$template = file($this->dir;$name;";html");
$template = implode("", $template);
return str_replace("\"", "\\\"", $template);
}
else exit('template "';$name;'" not found');
}
}
?>

so dann hätten wird das auch, jetzt noch eine funktion die das alles auch wieder ausgibt und dann hammas:

<?php
class tpl {
var $dir;

public function tpl($dir = '') {
if($dir == '') $dir = ";/";
else {
if($dir{0} != ";") $dir = ";$dir";
elseif($dir{1} != '/') $dir = ";/$dir";

if($dir{strlen($dir)-1} != '/') $dir ;= '/';

if(is_dir($dir)) $this->dir = $dir;
else exit('template dir not found');
}
}

public function get($name) {
if(file_exists($this->dir;$name;";html")) {
$template = file($this->dir;$name;";html");
$template = implode("", $template);
return str_replace("\"", "\\\"", $template);
}
else exit('template "';$name;'" not found');
}

public function output($template) {
print $template;
}
}
?>

speicher die klasse als zb 'class_tpl;php' ab.

jetzt sollte man auch wissen wie man damit arbeitet:
wir legen dafür eine neue ;php an namens 'index' und da schreiben wir zum testen das rein:

<?php
require ';/class_tpl;php';
$tpl = new tpl('ordner_mit_den_templates');
?>

'ornder_mit_den_templates' ist denk ich selbstredend (der ordner mit den templates)

danach legen wir mal ein template an, schreib dort irgendwas rein + eine variable: $test und speicher es dann als 'test;html' im templates order ab:
Mein erstes Template: $test

jetzt wollen wir in diesem template die variable $test geparsed haben, dazu müssen wir mit eval() arbeiten:

<?php
require ';/class_tpl;php';
$tpl = new tpl('ordner_mit_den_templates');
$test = 'Hallo Welt';
eval("\$test = '{$test}';");
?>


und so gibt man das ganze dann aus:
<?php
require ';/class_tpl;php';
$tpl = new tpl('ordner_mit_den_templates');
$test = 'Hallo Welt';
eval("\$test = '{$test}';");
eval("\$tpl->output('{$tpl->get('test')}');");
?>

wenn du jetzt zb template_a von 'ordner1/' haben willst, aber template_b von 'ordner2/' ist das kein problem. du hast in der vaiable $tpl die klasse tpl definiert, d;h du kannst darüber auch auf die klasse zugreifen. ein einfaches $tpl->dir = ';/ordner2/'; reicht und absofort werden alle templates aus 'ordner2/' geladen. sollte also kein problem sein.

viel spaß!

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Ähnliche Themen zu [PHP] Arbeiten mit Templates
  • Templates site
    brokenscreen - we love web print video (;;;madart25~com) Steves free website templates and free web templates (;;;steves-templates~com) Free Website Templates – Free Flash Templates (;;;templatesbox~com) Free Web Templates - Free web designs, templates and more! (;;;freewebtemplates~com) Flasht [...]

  • Templates
    Gibt es temlates die man so konfigurieren kann wie ein forum? ist vielleicht ne doofe frage aber gibts sowas? :) Bin zu faul um ne page zu coden 8) wenn es sowas gibt: wo? greez ::TrOY [...]

  • Wie mit Templates arbeiten ?
    Ich habe mit dem Gedanken gespielt mit ein paar Kumels ein CMS zu basteln. nun wollte ich fragen, wie das mit den Templates geht ? Also der User soll ja das CMS an sein Design anpassen können. Also dass ich wie beim Wbb Template-Dateien sind, und der Inhalt dur z;Bsp. "$Inhalt" gekennzeichnet ist. [...]



raid-rush.ws | Imprint & Contact pr