Templates
Aus phpMyForum Dokumentation
Mit Templates können wir das Design des Forums vollständig an unsere Wünsche anpassen.
Inhaltsverzeichnis |
Grundlagen
Auf den folgenden Seiten werden wir in Beispielen zeigen, wie Templates funktionieren und was mit der Template-Engine des phpMyForums alles möglich ist.
Syntax
Die Templates bestehen grundlegend aus xHTML und CSS.
Der folgenden Code ist z.B. eine einfache Tabelle wie sie öfters in den Tamplates auftaucht.
<table cellpadding="3" cellspacing="1" width="100%" class="defaultTable">
<tr>
<td width="100%" class="defaultTr">
Titel
</td>
</tr>
<tr>
<td class="catOne">
Inhalt
</td>
</tr>
</table>
Includes
Mit Includes kann man andere Templates in das aktuelle einbinden, dabei ist die Syntax wie folgt um das Template test einzubinden:
<#tpl_test#>
Sehen wir uns dazu noch ein Beispiel an in dem das eben Besprochene deutlicher wird.
Der folgende Code zeigt den Inhalt vom Template test in dem wir das Template testinclude einbinden wollen.
<p>Ein Absatz ...</p> <#tpl_testinclude#> <p>noch ein Absatz ...</p>
Der Inhalt des Templates testinclude welches wir hier einbinden ist der folgende:
<b>Inhalt aus Template <i>testinclude</i></b>
Wenn die Seite mit dem Template test später vom Forum ausgegeben wird, sieht der HTML-Code wie folgt aus:
<p>Ein Absatz ...</p> <b>Inhalt aus Template <i>testinclude</i></b> <p>noch ein Absatz ...</p>
Variablen
Um dynamische Inhalte ausgeben zu können, gibt es Vaiablen.
Variablen beginnen immer mit einem $ gefolgt von einigen Buchstaben, Unterstrichen oder Zahlen, im folgenden Template sind 2 Variablen in 2 Tabellenzeilen eingefügt, die eine Liste von Namen und eMail-Adressen ausgibt.
<tr>
<td>Name:</td>
<td>$Daten[name]</td>
</tr>
<tr>
<td>eMail:</td>
<td>$Daten[email]</td>
</tr>
spezielle Variablen
Die folgenden Variablen sollten in allen Templates verfügbar sein:
- $_cfg[...]
- Variablen aus der config.inc.php
- $_config[...]
- Variablen aus den Einstellungen im Admin
- $_user[...]
- Benutzerdaten der aktuell Eingeloggten Person
Um z.B. den Benutzernamen des eingeloggten Benutzer auszugeben, machen wir folgendes:
<strong>$_user[name]</strong>
Rechteverwaltung
Mit Rechte sind an dieser Stelle nur Template-Rechte gemeint. Mit diesen kann man den Zugriff auf einzelne Teile des Forums für Benutzer einschränken und für andere wie z.B. Administratoren erweitern.
Das folgende Bild zeigt diese 3 Optionen zur Rechtevergabe und zusätzlich die Option "site.php".
externer Zugriff auf Templates (site.php)
Über die Option "site.php" können wir Templates direkt aufrufen, somit lässt sich z.B. das Template css wie folgt aufrufen:
http://www.example.com/phpmyforum/site.php?template=css
Der wichtigste Teil der Addresse ist der folgende in 2 möglichen Schreibweisen:
/site.php?template=css /site.php?css
Content-Type
Wenn wir CSS oder JavaScript wie oben beschrieben in ein extra Template auslagern wollen, müssen wir noch einen Content-Type mit ausgeben. Dies geschieht z.B. wie folgt für CSS:
/site.php?template=css&type=text/css
Login
Mit dieser 2. Option können wir Templates erstellen, die nur Benutzer angezeigt bekommen die:
- ja
- eingeloggt
- nein
- ausgeloggt
- egal
- beides
sind. Somit können wir z.B. 2 verschiedene Willkommens-Meldungen auf der Startseite erstellen: eine für ausgeloggte Benutzer und eine andere für bereits eingeloggte Benutzer.
Moderator
Dieses Recht fragt ab, ob der aktuell angemeldete Benutzer ein Moderations-Recht besitzt.
- ja
- hat Moderations-Rechte (egal wie viele)
- nein
- hat keine Moderations-Rechte
- egal
- beides
Administrator
Die letzte Option ist funktioniert genauso wie die der Moderatoren-Rechte, nur dass es jetzt um die des Administrators geht.
- ja
- hat Admin-Rechte (egal wie viele)
- nein
- hat keine Admin-Rechte
- egal
- beides
Bedingungen
Bedingungen ermöglichen es uns, Teile von Templates / Template-Includes nur bei einer bestimmten Bedingung anzeigen zu lassen.
if
<if( $a == 1 )>
Text der erscheint, wenn $a den Wert 1 hat.
</if>
else
<if( $a == 1 )>
Text der erscheint, wenn $a den Wert 1 hat.
<else>
Text der erscheint, wenn $a nicht den Wert 1 hat.
</if>
elseif
<if( $a == 1 )>
Text der erscheint, wenn $a den Wert 1 hat.
<elseif( $a == 1 || $a == 2 )>
Text der erscheint, wenn $a den Wert 1 oder 2 hat.
<else>
Text der erscheint, wenn $a nicht den Wert 1 und nicht den Wert 2 hat.
</if>
Beispiel
Wenn wir z.B. den Benutzer mit seinem Benutzernamen begrüßen wollen, geht das wie folgt.
<if( $_user[id] )>
Hallo $_user[name], schön dass du wieder hier bist.
<else>
Hallo Gast
</if>
PHP-Code
Die Template-Engine vom phpMyForum erlaubt es uns, beliebigen PHP-Code in Templates auszuführen. Somit sind uns keine Grenzen bei der Umsetzung eigener Erweiterungen gesetzt, und das alles über Templates.
Syntax
<php>
echo 'an dieser Stelle kann eigener PHP-Code ausgeführt und ausgegeben werden';
</php>
Beispiel
Zur Vereinfachung benutzen wir hier das gleiche Beispiel wie bei den Bedingungen im vorherigen Abschnitt, nur diesmal mit den PHP-Tags.
Wir fragen also wieder ab, ob der Benutzer eingeloggt ist und begrüßen ihn mit seinem Benutzernamen oder alternativ bei einem Gast mit einer anderen Meldung.
<php>
global $_user;
if ( $_user['id'] ) {
echo 'Hallo '.$_user['name'].', schön dass du wieder hier bist.';
} else {
echo 'Hallo Gast';
}
</php>
global $_user;
importieren & exportieren
Mit dem Template import / export ist es uns möglich, Templates zu sichern oder mit anderen Nutzern der Wikipedia:Community zu tauschen.
Import
Der Import dient dem Wiederherstellen eines Template-Backups und dem Importieren von z.B. Templates anderer Benutzer.
Wir haben 2 Möglichkeiten Templates zu importieren:
upload
Diese Variante funktioniert nur mit Template-Backups die kleiner als das Upload-Limit des Servers sind.
Datei vom Server
Sollte der normale Upload - wie oben beschrieben - nicht funktionieren, benutzen wir einfach diese Variante.
Damit die Datei in dem <acronym title="Auswahlliste">Dropdown</acronym>-Feld erscheint, müssen wir diese in den Upload-Ordner des phpMyForums mit einem FTP-Client hochladen.
Export
Über die Export-Funktion haben wir die Möglichkeit, ein Backup einzelner / aller Templates eines Template-Sets herunterzuladen.
- als erstes wählen wir das Template-Set im Dropdown-Feld aus, aus welchen wir das Backup erstellen wollen
- danach werden alle Templates dieses Template-Sets aufgelistet, aus denen wir uns die gewünschten auswählen
suchen & ersetzen
Suchen & Ersetzen in Templates ermöglicht uns bestimmte Teile aus den HTML-Code zu suchen & ersetzen.
Suchen
Die Suche in Templates können wir auf Templates mit einem bestimmten Namen einschränken, diese Angabe muss ein Regulärer Ausdruck sein.
Im Feld Suchbegriff kann jede beliebige Zeichenkette eingetragen werden.
Suchen & Ersetzen
Diese Funktion ist mit der Suchen-Funktion identisch. Nur, dass nicht nur nach dem Suchbegriff gesucht, sondern dieser gleich durch den Text in Ersetzung ersetzt wird.

