vBulletin 4.0 führt eine neue Syntax zur Nutzung in den Templates ein, die die Notwendigkeit des Escapens von Strings und Erstellen von Formatierungen direkt in den PHP-Dateien reduziert.
Hinweis: Sobald in einem Template irgendein Ausdruck der neuen Syntax verwendet wird, werden alle alten Variablen und Bedingungen in diesem Template nicht mehr funktionieren. Es müssten in dem Fall also alle Variablen und Bedingungen in die neue Syntax umgewandelt werden.
Wenn möglich, sollte auf Variablen grundsätzlich mit der folgenden Syntax zugegriffen werden:
{vb:var variable}
Bei der Verwendung dieser Syntax wird der Inhalt der Variablen bei der Ausgabe mittels der PHP-Funktion htmlspecialchars 'sicher gemacht'.
Um auf Elemente eines Arrays zugreifen zu können, benutzen Sie den Punktoperator und nicht die php-üblichen eckigen Klammern:
{vb:var variable.foo} // gibt htmlspecialchars($variable['foo']) aus
{vb:var variable.$varkey} // gibt htmlspecialchars($variable[$varkey]) aus
Um auf den rohen, unveränderten Inhalt einer Variablen zuzugreifen, benutzen Sie diese Syntax:
{vb:raw variable}
Diese Art der Nutzung entspricht dem Zugriff auf $variable in vBulletin 3.x Templates. Die Variable wird in keinster Weise behandelt. Mit dem Punktoperator kann ebenfalls auf Elemente eines Arrays zugegriffen werden.
Die allgemeine Syntax ist:
{vb:methode arg1[, arg2...]}
Um den Variablennamen müssen keine weiteren geschweiften Klammern gesetzt werden. Beispiel:
{vb:methode {variable}} // unnötige Klammern
{vb:method variable}
{vb:phrase phrase_name[, Argumente für die Phrase...]}{vb:rawphrase phrase_name[, Argumente für die Phrase...]}
{vb:rawphrase message_by_x_on_y_at_z, {vb:link member, {vb:raw postinfo}}, {vb:raw postinfo.username}, {vb:raw postinfo.postdate}, {vb:raw postinfo.posttime}}
{vb:date timestamp[, format]}{vb:time timestamp[, format]}{vb:number number[, decimals]}{vb:raw variable}{vb:escapejs variable}{vb:urlencode variable}{vb:if condition, true[, false]}{vb:link type, info[, extra-info]}{vb:math expression}{vb:stylevar name[.sub-part]}Alle Tags benutzen den vb Namespace, um sie leichter erkennen und parsen zu können.
Die folgenden Tags sind verfügbar:
<vb:literal>diverser code</vb:literal>vb:literal Tag wird als reines HTML behandelt. Ausdrücke mit geschweiften Klammern oder vb:tag werden nicht ausgewertet.<vb:if condition="bedingung">ausgabe wenn wahr</vb:if>vb:if Tags ausgegeben. Andernfalls erfolgt keine Ausgabe.<vb:elseif condition="bedingung" />ausgabe wenn wahrvb:if benutzt werden, um weitere Bedingungen auszuwerten. Wenn die bedingung wahr ist, wird der Inhalt des vb:elseif Tags ausgegeben. Andernfalls erfolgt keine Ausgabe.<vb:else />ausgabe wenn falschvb:if benutzt werden, um ausgabe wenn falsch auszugeben, wenn die Bedingungen von vb:if oder vb:elseif nicht wahr sind.<vb:comment>ein kommentar</vb:comment>vb:comment Tag benutzt werden.<vb:each from="array" key="key" value="value"></vb:each>// Array mit Benutzerdaten:
// $users = array(
// 1 => array('username' => 'Michael', 'email' => 'michael@michael.xy'),
// 2 => array('username' => 'Scott', 'email' => 'scott@scott.xy'),
// 3 => array('username' => 'Stephan', 'email' => 'stephan@stephan.xy')
// );
<!-- der template code... -->
<vb:each from="users" key="userid" value="userinfo">
<li><a href="member.php?u={vb:var userid}">{vb:var userinfo.username}</a></li>
</vb:each>
<!-- ...erzeugt die ausgabe -->
<li><a href="member.php?u=1">Michael</a></li>
<li><a href="member.php?u=2">Scott</a></li>
<li><a href="member.php?u=3">Stephan</a></li>