templates

Hallo!

Nach durchlesen div. Internetseiten und der Tutorials hier bin ich immer noch zu blöd um Templates zu verstehen! Es wurden zwar schon andere deswegen zur Schnecke gemacht, aber ich trau mich trotzdem!

Ich habe eine kleine Site mit volgendem Aufbau:
PHP:
<html>
  <head>
  <link rel=stylesheet type="text/css" href="main.css">
  </head>
  <body>
  <a name='#top'></a>
  <div id="inhalt"> 
    <div id="banner">
   </div>
    <div id="menu"> 
  	  <? include("menu.php") ?>
    </div>
    <div id="news"> 
  	 <? include("texte/news.sub.php") ?>
    </div> 
  	
    <div id="text"> 
  	<? include("texte/preis.inc.php") ?>
    </div>
    <div id="bild">
  	  <img src="img/back.jpg">	 
    </div>
    <div id="footer"> 
  	  <? include("footer.php") ?>
    </div>
  
  </div>
  
  </body>
  </html>

Das Menü, die Fußzeile und der Inhalt sind einfache php-Dateien, ohne Schnick-Schnack. Einfach Text und Überschriftenformatierungen.

Im Menü hab ich einen Link "Preis" und beim Text-Div include ich dann halt die preis.inc.php.

DAS sind aber sicher keine Tamplates!
Aber wie arbeiten die !

Eilt nicht, ich wills einfach nur verstehen können!

Liebe Grüße und Dank vorraus
werner
 
Der Sinn von Template-Systemen ist es, HTML und PHP zu trennen, sprich in verschiedenen Dateien auszulagern. Wie die einzelnen Template-Systeme genau arbeiten, ist unterschiedlich. Im Prinzip werden in den Template-Dateien bestimmte Zeichenfolgen durch variablen Text aus dem PHP-File ersetzt. Desweiteren kann man auch Schleifen in Template-Systemem realisieren, um bestimmte Layoutabschnitte wiederholt auszugeben.
Es kommt aber ganz auf das Template-System an, das du verwendest, welche Funktionalitäten geboten werden. Ein sehr gutes Template-System: http://smarty.php.net
 
Irgendwie verstehe ich nicht ganz dein Anliegen.

Das Skript welches du gepostet hast ist ja - wenn auch nur ein primitives - Templatesystem.

Echte Templatesystem wie zB Smarty bestehen aus 2 Teilen.
- Templates (Reines HTML bzw. manchmal auch eine Scriptsprache der Templateengine)
- Parser (Engine)

Man bindet den Parser in sein Script ein sagt ihm welches Template man verwenden will und welche Variablen eingebunden werden soll.

Der Parser fügt diese dann in das Template ein.
 
Ich dachte, mein System ist "verkehrt" rum! Sollte nicht eigentlich der HTML Teil, da immer gleich, in einer Template-Datei (nennen wir sie mal so) stehen und der PHP-Code diese aufrufen?

Was kommt also zuerst?
Inhalt holt sich HTML-Grundgerüst oder
HTML-Grundgerüst holt sich Inhalt

Sollte ich nur Schwachsinn daherschreiben bitte posten und mich dann einfach ignorieren!

Trotzdem Danke
werner
 
Im Prinzip hast du schon recht.
Aber die Frage ist ob es Sinn macht.

In einem Forum oder sehr grossen Seiten macht ein richtiges Templatesystem sicher Sinn.
Wenn du aber nur eine mittlere HP bauen willst, dann ist deines vollkommen in Ordnung.
Ansonsten ist der Aufwand gegenüber dem Nutzen viel zu gross. (pers. Meinung)
 
Ach wenn ich jetzt bestimmt als dumm hingestellt werde aber wie kann ich diese HTML Templates mit Variablen versehen, wie z.b. $news das soll dann halt gegen den Inhalt getauscht werden. ich möchte aber keine fertigen systeme ich möchte meins selbst nehmen, die Templates an sich gehen, ich möchte auch $news mit einem Template getauscht haben wenn ihr versteht was ich meine.
 
Die meisten Templatesysteme verwenden dafür eigene Platzhalter zb: {News} .
Diese werden dann geparst und durch den Inhalt echter Variablen ersetzt.

Ich würde mir an deiner Stelle einmal ein paar kleine Beispiele von Smarty ansehen. Da ist alles recht gut erklärt.
 
Also eigentlich hat motb ja schon nicht recht. Was du da hast, ist einfach eine ganz normale HTML-Datei mit etwas PHP. Ein Templatesystem unterscheidet strikt zwischen Parser (z. B. index.php) und Templatedatei (z. B. template.tpl). Um diese zu ersetzen, nimmst du wie bereits erwähnt spezielle Keywords, die sich speziell auszeichnen, z. B. [news], {news}, %news% oder so irgendwas. Einfach etwas, was in normalem Text eben nicht vorkommt. Und dein Parser geht dann eben den ganzen Inhalt der template.tpl durch (z. B. mit [phpf]file_get_contents[/phpf]) und ersetzt diese Platzhalter durch entsprechenden Text.
 
Zurück