Location: PHPKode > projects > php CMS > phpcms/parser/doc/doc_de/templates.htm
{PROJECT}		../../template/doc.de.ini
{ROBOTS}INDEX, FOLLOW
{DESCRIPTION}Wofür man Templates benötigt, was Subtemplates und dynamische Templates sind und wie man Templates verwendet.
{MENU}			00.06.03
{TITEL}			Template-Datei
{CONTENT}
<B_BOX_START "Übersicht">
<li><a href="$self#beschr">Beschreibung von Templates</a></li>
<li><a href="$self#home">Verwendung der Variable "&#36;home" in Templates</a></li>
<li><a href="$self#self">Verwendung der Variable "&#36;self" in Templates</a></li>
<li><a href="$self#dynamic">Dynamische Templates</a></li>
<li><a href="$self#was">Was sind Subtemplates?</a></li>
<B_BOX_STOP>
<a name="beschr"></a>
<B_BOX_START "Beschreibung von Templates">
<p>
Templates sind mit Dokumentvorlagen für Word-Dokumente oder Power-Point-Vorlagen
vergleichbar. Ein Template ist eine normale HTML-Datei in die Ihr Platzhalter 
für Felder einsetzen könnt.
</p>
<p>
Die Platzhalter werden dann durch die Inhalte ersetzt, die unter der gleichen 
Feldbezeichnung in den Content-Dateien stehen. Dadurch wird der Inhalte einer 
Website vom Layout getrennt. Spätere Layoutänderungen werden am Template 
durchgeführt und wirken sich auf die gesamte Website aus.
</p>
<p>
Wir beachten jetzt mal nicht die Projektdatei und die Menü's. Diese Dinge 
behandeln wir dann bei der Erklärung der Content-Dateien.
</p>
<B_BOX_STOP>
<a name="home"></a>
<B_BOX_START "Verwendung der Variable "&#36;home" in Templates">
<p>
Wenn Ihr Grafiken oder Cascaded Style Sheets in HTML-Dateien referenziert, müßt 
Ihr oft den absoluten Pfad zu der entsprechenden Datei angeben. Das ist störend, 
wenn Ihr ein Verzeichnis ändern müßt, oder eine Website auf einen anderen Server 
übertragen wollt. In einem solchen Fall müssen alle absolut gesetzten Pfade in 
den Template-Dateien korrigiert werden. Das erspart Ihr Euch, wenn Ihr die
Variable "&#36;home" in der <a href="projektdatei.htm">Projektdatei</a> setzt 
und in Euren Templates statt dem Absoluten Pfad, diese Variable einsetzt.
</p>
<B_BOX_STOP>
<a name="self"></a>
<B_BOX_START "Verwendung der Variable "&#36;self" in Templates">
<p>
Es kann vorkommen, daß man ein bestimmtes Script oder eine Funktion mit dem 
aktuellen Seitennamen als Parameter ausführen möchte. Zu diesem Zweck ist die 
Variable "&#36;self" definiert. Sie wird vom Parser automatisch durch den 
Dateinamen, der momentan angezeigten Datei ersetzt. Ein einfaches Template kann 
z.B. so aussehen:<br />&nbsp;
<hr />
<US>Beispiel</US>
<CODE><PRE>
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;<B>&#123;titel&#125;</B>&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;<B>&#123;TITEL&#125;</B>&lt;/h1&gt;
    <B>&#123;CONTENT&#125;</B>
  &lt;/body&gt;
&lt;/html&gt;
</PRE></CODE>
<hr /><br />
Nehmen wir an, daß in der ersten Content-Seite nach dem Feld &#123;TITEL&#125; 
die Worte: "Meine erste Homepage mit phpCMS" stehen und nach dem Feldbezeichner 
&#123;CONTENT&#125; die Worte: "Hier steht überflüssiges Gequassel, das dann in 
das Template eingesetzt wird.&lt;br&gt; Ihr könnt zur Formatierung normale 
HTML-Tags einsetzen. Intelligenter ist es aber, die Formatierung mit eigenen 
TAGS durchzuführen.".
</p>
<p>
Der Parser ersetzt dann beim Aufruf der Content-Seite die Platzhalter im 
Template mit den Werten aus der Content-Seite. Das sieht dann so aus:
</p>
<hr />

<CODE><PRE>
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;<B>Ein Beispiel</B>&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;<B>Ein Beispiel</B>&lt;/h1&gt;
    <B>Hier steht überflüssiges Gequassel, das dann in das Template eingesetzt wird.&lt;br&gt;
    Ihr könnt zur Formatierung normale HTML-Tags einsetzen. Intelligenter ist es aber,
    die Formatierung mit eigenen TAGS durchzuführen.</B>
  &lt;/body&gt;
&lt;/html&gt;
</PRE></CODE>

<hr />
<p>
So einfach funktioniert phpCMS!
</p>
<B_BOX_STOP>
<a name="dynamic"></a>
<B_BOX_START "Dynamische Templates">
<p>
Es kann vorkommen, daß man den selben Inhalt in anderer Form präsentieren will.
Beispielsweise wenn man dem Betrachter die Möglichkeit geben möchte, die Seite 
auszudrucken. In diesem Fall unterstützt phpCMS die Angabe des Templates, mit 
dem die Seite angezeigt werden soll, in der URL.
</p>
<p>Einige Beispiele für einen Aufruf mit Übergabe:</p>
<CODE>
	http://phpcms.de/homepage/doc/doc_de/templates.htm?template=/homepage/templates/print.tpl<br />
	http://phpcms.de/homepage/doc/doc_de/templates.htm?template=&#36;home/templates/print.tpl<br />
	http://phpcms.de/homepage/doc/doc_de/templates.htm?template=unterverz/print.tpl
</CODE>
<p>
Die Variable &#36;HOME gibt dabei den Pfad zum Projekt an und wird der 
Projektdatei entnommen. Alternativ kann der absolute oder ein relativer Pfad 
benutzt werden. <WICHTIG>Aus Sicherheitsgründen wird ein relativer Pfad, der in 
übergeordnete Verzeichnisse führt und "../" enthält nicht berücksichtigt.</WICHTIG>
</p>
<p>
Es gibt aber auch einen Nachteile bei der Verwendung von dynamischen Templates: 
Seiten mit dynamischen Templates werden vom Parser nicht gecached.
</p>
<B_BOX_STOP>
<a name="was"></a>
<B_BOX_START "Was sind Subtemplates?">
<p>
Wenn Ihr wiederkehrende HTML-Elemente in Euren Templates habt, die aber in 
allen Seiten gleich sein sollen, verwendet Ihr am besten Sub-Templates. Auch 
innerhalb der selben Seite (des selben Templates) könnt Ihr mehrmals daselbe 
Sub-Template angeben.</p>
<p>
Am besten notiert Ihr Sub-Templates in einer eigenen Zeile in Eurem Template. 
Am Beginn jenes Zeichen, daß Ihr als Feld-Start-Zeichen im Parser eingestellt 
habt, danach den Feldnamen "TEMPLATE", ein Leerzeichen und dann das 
Schlüsselwort "FILE=" gefolgt von einem Anführungszeichen. Eure Zeile sieht 
dann z.B. so aus:</p>
<CODE>&#123;TEMPLATE FILE="/homepage/templates/sub_template.tpl"&#125;</CODE>
<p>
<WICHTIG>Achtung:</WICHTIG> Die Zeile muß genau so geschrieben werden, also in 
Großschrift und mit <WICHTIG>einem</WICHTIG> Leerzeichen
nach dem Schlüsselwort "TEMPLATE". Wenn Ihr einfache oder keine 
Anführungszeichen benutzt, kann das Sub-Template nicht gefunden werden.
</p>
<p>
Der Pfad zur Datei in der das Sub-Template abgelegt ist kann absolut zum 
Document-Root Eures Webservers, relativ zum Template, aus dem das Subtemplate 
aufgerufen wurde angegeben werden. Ihr könnt auch die Variable "&#36;home" für die
Einbindung benutzen. Valide Angaben sind also z.B.:
</p>
<CODE>&#123;TEMPLATE FILE="/homepage/templates/sub_template.tpl"&#125;<br />
			&#123;TEMPLATE FILE="./sub_template.tpl"&#125;<br />
			&#123;TEMPLATE FILE="&#36;home/templates/sub_template.tpl"&#125;<br />
</CODE>
<p>
Damit "&#36;home" funktioniert müßt Ihr diese Variable auch in der 
PROJEKT-Datei definiert haben.
</p>
<p>
Ihr könnt Sub-Templates auch verschachteln, das heißt in einem Sub-Template ein 
weiteres Sub-Template aufrufen. Dabei müßt Ihr aber darauf achten, daß Ihr keine 
Rekursion erzeugt, also aus einem Sub-Template das selbe Sub-Template nochmals 
aufruft.
</p>
<p>
Abgesehen davon gilt für Sub-Templates alles, was auch für Templates gilt.
</p>
<B_BOX_STOP>
Return current item: php CMS