Kontroll-Strukturen
IF
Das if ... endif Konstrukt erleichtert die bedingte Darstellung von Template-Fragmenten.
Syntax:
<!-- IF var --> var is not empty! <!-- ENDIF var -->
<!-- IF name=='John Doe' --> Your name is John Doe! <!-- ENDIF name -->
<!-- IF name!='John Doe' --> Your name is not John Doe! <!-- ENDIF name -->
Eine Variable kann als rechter Teil des IF-Klausel verwendet werden.
Syntax:
<!-- IF name=variablename -->
Your name match with {variablename}
<!-- ENDIF name -->
<!-- IF name!=top.variablename -->
Your name doesn’t match with {top.variablename}
<!-- ENDIF name -->
Hinweis:
Der Variablename nach ENDIF ist optional
Die Variable kommt vom PHP-Code
IF/ELSE/ELSEIF Kontrollstrukturen können auch ineinander verschachtelt sein oder in BEGIN-IF Kontrollstrukturen eingefügt werden
ELSE
Das else Konstrukt erweitert ein if-Konstrukt um die Möglichkeit das, wenn eine Aussage FALSE ergibt, ein entsprechendes Template-Fragment eingefügt werden kann.
Syntax:
<!-- IF usergroup="ADMIN" -->
<a href="admin.php"> ADMIN Login </a><br />
<!-- ELSE -->
You are in guest mode!<br />
<!-- ENDIF usergroup -->
Hinweis:
Der Variablename nach ENDIF ist optional
Die Variable kommt vom PHP-Code
IF/ELSE/ELSEIF Kontrollstrukturen können auch ineinander verschachtelt sein oder in BEGIN IF Kontrollstrukturen eingefügt werden
ELSEIF
Mit dem elseif-Konstrukt kann ein if-Konstrukt nahezu endlos erweitert werden.
Syntax:
<!-- IF usergroup="ADMIN" -->
<a href="admin.php"> Admin Staff Login </a><br />
<!-- ELSEIF usergroup="SUPPORT" -->
<a href="support.php"> Support Staff Login </a><br />
<!-- ELSEIF usergroup -->
<a href="other.php"> Standard Login </a><br />
<!-- ELSE -->
You don't even have a usergroup!
<!-- ENDIF -->
Hinweis:
Der Variablename nach ENDIF ist optional
Die Variable kommt vom PHP-Code
IF/ELSE/ELSEIF Kontrollstrukturen können auch ineinander verschachtelt sein oder in BEGIN IF Kontrollstrukturen eingefügt werden
BEGIN ... END
Das begin ... end Konstrukt stellt die Möglichkeit bereit numerische Arrays zu durchlaufen. Jedes Element des numerischen Array wiederum muss ein assoziatives Array sein.Das Script zwischen einem eingebetteten <-! BEGIN -> und <-! END -> Tag wird so oft wiederholt wie es Elemente im nummerischen Array gibt.
Jedes assoziative Array wird durch die folgenden zwei zusätzliche Elemente erweitert:
ROWCNT:
Die aktuelle Position des Elements innerhalb des übergeordneten Arrays. (0,1,2,3,...n)
ROWBIT:
Das niederwertigste Bit von ROWCNT. (0,1,0,1,0,1,...)
begin ... end blocks können leicht verschachtelt und analysiert werden (rekursiv)
Beispiel:
// Array initialisieren
$users = array(
array( 'NAME' => 'John Doe', 'GROUP' => 'ADMIN' ),
array( 'NAME' => 'Jack Doe', 'GROUP' => 'SUPPORT' ),
array( 'NAME' => 'James Doe', 'GROUP' => 'GUEST' ),
array( 'NAME' => 'Jane Doe', 'GROUP' => 'GUEST' ),
);
$page->assign( 'users', $users );
Die Template-Datei würde dann enthalten:
<style type="text/css">
.col0 { background-color: #D0D0D0; }
.col1 { background-color: #F0F0F0; }
</style>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<th>No.</th>
<th>Username</th>
<th>Usergroup</th>
</tr>
<!-- BEGIN users -->
<tr class="col{ROWBIT}">
<td>{ROWCNT}</td>
<td>{NAME}</td>
<td>{GROUP}</td>
</tr>
<!-- END users -->
</table>
Hinweis:
Der Variablename nach ENDIF ist optional
Die Variable kommt vom PHP-Code
IF/ELSE/ELSEIF Kontrollstrukturen können auch mit BEGIN ...END Kontrollstrukturen verschachtelt werden
INCLUDE
Hierbei handelt es sich nicht um eine echte Kontrollstruktur. Mit der INCLUDE-Direktive werden externe Daten in die Template-Datei geladen
Template-Dateien können in anderen Template-Dateien über die INCLUDE-Direktive includiert werden. Dabei können in diesen „Sub-Templates“ die gleichen Funktionen/Kontrollstrukturen verwendet werden.
Syntax:
<!-- INCLUDE templatename.html -->
// oder
<!-- INCLUDE templatename.php -->
// oder
<!-- INCLUDE templatename.meinTemplate -->
// oder…
Hinweis:
Include-Datei ist im Template-Verzeichnis (default '_skins/')
Ähnlich der Methode $page->addtpl ()… Unterschied ist dabei, dass "addtpl" die Daten in einer Variablen speichert, die dann ('$ page-> assign ()') zugewiesen bekommt (innerhalb des Haupt-Templates)
Die Kontroll-Strukturen werden nur innerhalb der Template-Datei(en) benutzt!