Anzeige
Tutorialbeschreibung

Templates: eigenes System zum einbinden

Templates: eigenes System zum einbinden

Hier zeige ich Euch, wie Ihr mit ein paar kleinen Funktionen, Euer eigenes Template-System programmieren könnt.


Templates! Wozu eigentlich?

Ganz einfach! Ihr könnt damit ganz einfach das komplette Design eurer Homepage innerhalb kürzester Zeit ändern!

Es gibt viele Möglichkeiten Templates einzubinden. Ich stelle hier nur meine Lösung vor.

Achso, das ist mein erstes Tutorial, also seid bitte nicht allzu streng.

Bilder

Ihr braucht dazu mindestens 3 Dateien:
1. die Datei die von den Besuchern aufgerufen wird (hier index.php)
2. eine Template-Datei (hier design/euer_design/templates/index.html)
3. euer Stylesheet (hier design/euer_design/euer_stylesheet.css)

Die Datei „design/euer_design/templates/index.html“
Sie enthält den eigentlichen HTML Quelltext der den Besuchern ausgegeben werden soll. Jedoch nur den Teil der statisch ist, d.h. der auf all euren Seiten gleich ist.

--BEGINN--
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

 <head>
  <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
  <title>{$templ['index'][pagetitle]}</title>
  <link rel="stylesheet" href="/design/{$config['design']}/euer_stylesheet.css" type="text/css" />
 </head>

 <body>
  <table class="mainTab" width="100%" cellpadding="0" cellspacing="0">
   <tr><td colspan="5">{$templ['index'][pagetopic]}</td></tr>
   <tr><td colspan="5">&nbsp;</td></tr>
   <tr>
    <td class="" valign="top">{$templ['index'][left_boxes]}</td>
    <td>&nbsp;</td>
    <td class="content" valign="top">{$templ['index'][content]}</td>
    <td>&nbsp;</td>
    <td valign="top">{$templ['index'][right_boxes]}</td>
   </tr>
   <tr><td colspan="5">&nbsp;</td></tr>
   <tr><td>&nbsp;</td><td colspan="3">{$templ['index'][footer]}</td><td>&nbsp;</td></tr>
  </table>
 </body>

</html>
--END--

Nun zur index.php
Hier müssen wir zunächst einmal einige Variablen definieren:

<?php
$config['design'] = 'euer_design'; // der Name des Ordners in dem die Templates eures Designs liegen

$templ = array(); // enthält den variablen Teil eurer HTML-Quelltexte und wird in jedem Script neu definiert
?>

Nun brauchen wir eine Funktion, die den Inhalt der Template-Dateien einliest und die Variablen (z.B. $templ) ersetzt:

<?php
function fetchTemplate( $template
)
{
   global
$templ, $config;  
// damit Ihr auf die Variablen auch innerhalb der Funktion zugreifen könnt

   
$handle = fopen (__FILE__ . '/design/' . $config['design'] . '/templates/' . $template, "rb"
);
   
$string = fread ($handle, filesize ($template
));
   
fclose ($handle
);

   eval(
"$output .= "" .$string. "";");
// hier werden die Variablen $templ und $config durch euren Inhalt ersetzt

   
return $output
;
}
?>

Wie wird das jetzt benutzt?

<?php

$templ
['index']['pagetitle'] = 'euer Seitetitel'
;
$templ['index']['pagetopic'] = 'eure Seitenüberschrift'
;
$templ['index']['left_boxes'] = 'linkes Menu'
;
$templ['index']['content'] = 'Seiteninhalt'
;
$templ['index']['right_boxes'] = 'rechtes Menu'
;
$templ['index']['footer'] = 'Fußzeile'
;

$ausgabe = fetchTemplate('index.html'
);

echo
$ausgabe
;

?>

Das Ganze könnt und solltet Ihr dann mit mehreren Dateien machen und diese verschachteln.
z.B.:
<?php

$templ
['content']['was_auch_immer'] = 'Seitentext'
;

$templ['index']['content'] = fetchTemplate('content.html'
);

$ausgabe = fetchTemplate('index.html'
);

echo
$ausgabe
;

?>

Die Funktion fetchTemplate() solltet Ihr aber in eine Extradatei oder auch Klasse auslagern und diese dann mit weiteren zugehörigen Funktionen erweitern.

Ein Beispiel für ein ähnliches System findet Ihr auf http://www.wayoflan.de/. Dort wird ein System namens Lansuite eingesetzt, welches ein gutes Beispiel dafür ist.

Ich hoffe das Tut ist verständlich und hilft Euch ein wenig weiter.

Bei Fragen postet einfach ein Kommentar!

MFG dolito


DVD-Werbung
Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von Das_Auge
  • 22.03.2011 - 22:52

So habs mir mal grob angeschaut, auf den ersten Blick dürfte es ganz machbar für Anfänger sein ^^.
Werde es dann gleich mal ausprobieren...Danke

Portrait von Kloppy
  • 26.02.2011 - 23:34

Ich habs leider gleich 2 mal runter geladen

Portrait von Kloppy
  • 23.01.2011 - 22:56

Super Tutorial! Muss ich gleich ausprobieren!

Portrait von Promiso
  • 09.03.2010 - 17:22

könnte ein bischen ausführlicher sein

Portrait von ninoco
  • 11.01.2010 - 11:56

Ich finde es auch sehr gut. Danke.

Portrait von mori
  • 10.12.2009 - 13:06

Nettes Tut für nen templatesystem aber für anfänger ist die erklärung etwas zu mangelhaft ich bezweifle das jemand der wenig bis kaum Erfahrung mit php hat es richtig rüberbekommt

Portrait von alejeune
  • 21.11.2009 - 17:14

bedanke mich ebenfalls, hat mich meinem ziel ein stück näher gebracht.

Portrait von Mainclain
  • 30.09.2009 - 11:43

Ich finde im PHP-Code sollten gerade für Anfänger mehr Kommentare stehen, was allerdings vorhanden ist, ist gut beschrieben.
Gab mir ne kleine Anregung für ein eigenes Template-System, vielen dank dafür.

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 31.07.2009 - 12:17

Also, ich muss sagen, das ich als Anfänger immer noch nicht weiß wie und was genau jetzt gemacht werden soll.
Könnte mir ggf. mal jemand mit Lansuite helfen ?
Nutzte auch eine neuere Version, macht das irgendwelche Unterschiede ?


Über ein Feedback wäre ich echt euch dankbar, da ich kurz vor der Verzweiflung stehe ....

Portrait von Snaq
  • 13.07.2009 - 21:54

schönes tutorial, 5 sterne!

Portrait von bugmenot
  • 12.07.2009 - 23:46

Für Anfänger super geschrieben und auch klasse erklärt.

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 24.11.2008 - 20:21

blöder weise werden die backslash bei eval immer entfernt, deswegen seht euch http://at2.php.net/manual/de/function.eval.php an, da steht die richtige syntax von eval

mfg Zauberfisch

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 24.11.2008 - 20:18

super tut, hat mir sehr geholfen, werd meine hp jezt so aufbaun
leider waren einige fehler drin ): weis nicht ob mein server anders eingestellt ist als andere^^ oder ob dir hier fehler untergekommen sind, jedenfals hab ich das script überarbeitet und bei mir läuft es jetzt: hier die index.php:



$config['design'] = 'euer_design'; // der Name des Ordners in dem die Templates eures Designs liegen

$templ = array(); // enthält den variablen Teil eurer HTML-Quelltexte und wird in jedem Script neu definiert

function fetchTemplate($template)
{
global $templ, $config; // damit Ihr auf die Variablen auch innerhalb der Funktion zugreifen könnt

$filename = 'design/'. $config['design'] . '/templates/' . $template;

/***das __FILE__ hat bei mir den wert: c:/.../httpdoc/www.xxx.at/index.php daher lasse ich es weg das setzt aber voraus das der desing ordner im selben ordner ist wie die index.php***/

$handle = fopen ($filename, "rb");
$str = fread ($handle, filesize($filename)); /*** filesize musste ich den ganzen pfad und nicht nur den filenamen angeben***/
fclose ($handle);
eval("$str = "$str";");

return $str;
}

$templ['index']['pagetitle'] = 'euer Seitetitel';
$templ['index']['pagetopic'] = 'eure Seitenüberschrift';
$templ['index']['left_boxes'] = 'linkes Menu';
$templ['index']['content'] = 'Seiteninhalt';
$templ['index']['right_boxes'] = 'rechtes Menu';
$templ['index']['footer'] = 'Fußzeile';

$ausgabe = fetchTemplate('index.html');
echo $ausgabe;



PS: hab ein paar variablen namen geändert und welche hinzugefügt ... nicht verwirren lassen

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 12.10.2008 - 17:01

Großartiges Tut, allerding ein kleines Syntaxfehler

eval ("$output .= "" .$string. "";");

so ist die Zeile richtig

Portrait von Kouki
  • 03.10.2008 - 20:48

gutes tut, wird mir bei meinem website project sicher sehr helfen

Portrait von whitetip
  • 19.06.2008 - 08:34

danke für das tut, könnte aber etwas anfängerfreundlicher erklärt sein, ich würde bezweifeln das ein anfänger das versteht.

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 14.09.2006 - 14:24

Parse error: parse error in C:Programmexampphtdocsluwaluwa-designincludesfunctions.php on line 10

[php]

[/php]

ist die Zeile mit dem "eval"... will bei mir einfach nicht funktionieren...

Hoffe auf eine Baldige Antwort
mfg

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 14.09.2006 - 14:28

ok... code wird nicht angezeigt... bekomme einen parse error beim "eval" befehl... kann mir da jemand helfen?

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 14.09.2006 - 16:22

Kein Problem:<br>
<br>
Das Problem ( ;) ) liegt hier darin, dass in dem Tutorial die Backslashes escapt sind oder gar ganz entfernt wurden.<br>
<br>
Die Zeile muss lauten:<br>
<blockquote>eval("$output = "" .$string. "";");</blockquote><br>
<br>
<b>Wichtig!!!</b><br>
<br>
In dem Template ( $string ) muss sich gültige Syntax befinden. D.h., wenn du " oder ' benutzen willst oder andere Sonderzeichen mit Bedeutung, musst du diese escapen (mit Backslash).<br>
<br>
MFG dolito<br>
<a href="http://www.way-of.lan.de"> Way-of-LAN</a> [www.way-of.lan.de]

Alternative Portrait

-versteckt-(Autor hat Seite verlassen)

  • 20.08.2006 - 09:52

Ja kein schlechtes System. Ich bekomme zwar ne Fehlermeldung aber die Idee ist gut und hat mir Spaß gemacht. Ich würde wenn ich Zeit habe mal ne Klasse schreiben die dein System Implementiert falls dir das genehm ist.

x
×
×