Andreas: Frage zu Templates

Hallo!

Grundsätzlich glaube ich zwar zu wissen, was man mit Templates meint, also irgendeine Art von Vorlage, die in mehrere Dateien eingefügt wird, so das bei eventuellen Änderungen  immer nur die Vorlage geändert werden muß. Jetzt habe ich die Frage, ob das spezielle Dateien bzw. eine speziele Art der Einbindung ist, oder ob es einfach z.B. per include eingebundene Dateien sind, die z.B. eine Navigationsleiste enhalten, die auf jeder Seite mit <? include "nav.inc" ?> an entsprechender Stelle eingebunden wird.
2. Möglichkeit die mir einfiele wäre es Einstellungen für die Seite aus einer Include Datei oder direkt aus der DB einzubinden, die an entsprechender Stelle in den html-Code eingesetzt werden. Wobei diese Möglichkeit glaub ich nicht sehr gut ist, vor allem solche Daten aus der DB zu holen.
3. Möglichkeit mit allseits bekanntem CSS, Klassen... was ja speziell für das Design vorgesehen ist.

Jetzt frage ich mich ob das auch dasselbe ist, wenn man über Templates spricht, oder ob es da noch andere bessere Möglichkeiten gibt, auf mehreren Seiten gleich bleibende Elemente zentral einstellen zu können. Was meint Ihr immer genau, wenn Ihr über Templates sprecht?

Grüsse
  Andreas

  1. Hi,

    Was mit Template genau gemeint ist und wie es funktioniert
    hängt vom Zusammenhang ab (C++, XML, etc.). Bei PHP kenn ich Templates von FastTemplate (http://www.thewebmasters.net/).
    Dort ist ein Template HTML-Code mit "Platzhaltern". Mit
    Hilfe der FastTemplate-Klasse kann man diese Platzhalter
    durch andere Inhalte ersetzen. Da dies beliebig
    verschachtelbar ist kann man recht komplexe Sachen basteln.
    Gut wenn man die echo's loswerden will oder zu mehreren an
    einer Seite arbeitet.

    Gruss,
    Stefan

    1. Hi!
      Und wie ist das von der Performance? Jedenfalls hatte ich bei meinen selbst gebastelten Lösungen mit zig Datenbakabfragen und Einbindung über Echo wirklich das Gefühl, dass das die Seiten sehr langsam macht. Wie ist das bei Templates?

      Grüsse
        Andreas

  2. Hi,
    Templates im klassischen Sinn sind normale HTML Dokumente, die an einigen
    stellen Platzhalter haben. Diese Platzhalter werden im Programmablauf
    mit Inhalten gefüllt. Beispiel:
    ---huhu.tpl---
    <html>
     <head>{TITLE}</head>

    <body>{CONTENT}</body>
    </html>
    --ende--

    --index.php--
    $tp=new templateEnginge();
    $tp->set_file('huhu.tpl');
    $tp->set_var('TITLE','Meine Seite [tm]');
    $tp->set_var('CONTENT','Hier ist viel interessanter Text');
    $tp->pparse();
    --ende--

    Damit wird eine strikte Trennung von Programmlogik und Layout erreicht. Das ist
    u.A. sehr hilfreich wenn zwei Abteilungen (Design und Technik) an einem Projekt
    arbeiten.
    Intern verwenden die miesten template Engines die preg_* Funktionen von PHP die
    Platzhalterersetzungen vorzunehmen.

    Beliebte Template Engines:
    http://sf.net/projects/phplib/
    http://pear.php.net/manual/en/packages.templates.php
    http://www.phpinsider.com/php/code/Smarty/

    Jan
    --

    1. Hi!

      ---huhu.tpl---
      <html>
      <head>{TITLE}</head>

      <body>{CONTENT}</body>
      </html>
      --ende--

      Und die {} werden automatisch erkannt?

      --index.php--
      $tp=new templateEnginge();
      $tp->set_file('huhu.tpl');
      $tp->set_var('TITLE','Meine Seite [tm]');
      $tp->set_var('CONTENT','Hier ist viel interessanter Text');
      $tp->pparse();
      --ende--

      warum $tp->pparse();? was bewirkt das?

      http://sf.net/projects/phplib/
      http://pear.php.net/manual/en/packages.templates.php
      http://www.phpinsider.com/php/code/Smarty/

      Danke für die Links, muß ich mich wohl mal einarbeiten!

      Grüsse
        Andreas

      1. Hi,

        Und die {} werden automatisch erkannt?

        das macht die Template Engine

        warum $tp->pparse();? was bewirkt das?

        das ust aus der PHPLIB template engine abgeschaut.
        pparse steht fuer parse und print, d.h. die varianblen werden ersetzt und das ergebnis ausgegeben.

        http://sf.net/projects/phplib/
        http://pear.php.net/manual/en/packages.templates.php
        http://www.phpinsider.com/php/code/Smarty/

        Danke für die Links, muß ich mich wohl mal einarbeiten!

        jo.

        Jan
        --