Variable Access
Wherever possible, reference variables in templates using the following syntax:
{vb:var variable}
To access array elements, use a dot operator rather than standard PHP square brackets:
{vb:var variable.foo} // accesses htmlspecialchars($variable['foo']) {vb:var variable.$varkey} // accesses htmlspecialchars($variable[$varkey])
To access variables in versions of vBulletin prior to V4, use the following syntax:
{vb:raw variable}
Curly-Brace Syntax
The general curly-brace syntax is the following:
{vb:method arg1[, arg2...]}
{vb:method {variable}} // unneccessary extra braces {vb:method variable}
phrase
The code {vb:phrase phrase_name[, arguments for phrase...]} inserts the specified phrase. If arguments are provided, they will be run through htmlspecialchars.
Example:
{vb:phrase welcome}
The code {vb:rawphrase phrase_name[, arguments for phrase...]} works like phrase, although arguments bypass htmlspecialchars.
Example:
{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}}
The code {vb:date timestamp[, format]} formats a UNIX timestamp using the default date format for the active language. A format may also be explicitly specified. The timezone will be corrected for the viewing user.
time
The code {vb:time timestamp[, format]} works like date, although
it uses the default time format instead of date format.
number
The code {vb:number number[, decimals]} outputs a number having run through vb_number_format for the correct locale formatting. The number of decimal places to display can be optionally specified.
raw
The code {vb:raw variable} outputs the variable raw, without any formatting or escaping.
escapejs
The code {vb:escapejs variable} returns the variable prepared for use as a Javascript single-quoted string instead of running htmlspecialchars.
urlencode
The code {vb:urlencode variable} escapes the variable using urlencode.
if
The code {vb:if condition, true[, false]} can be used in instances where the full <vb:if>[\var] tag cannot be used, such as within HTML tags.
Example:
<div class="{vb:if $forumid==1, forum1, forum}">...</div>
The code [var]{vb:link type, info[, extra-info]} is used to build a hyperlink URL of the specified type and into the correct “friendly” format.
For more information, see <<<Insert doc link: Link Syntax>>>.
math
The code {vb:math expression} is primarily used within CSS to evaluate the result of the mathematical expression specified.
stylevar
The code {vb:stylevar name[.sub-part]} is used to output a style variable from the style system. No escaping is performed.
Tags
All tags make use of the vb namespace for ease of identification and parsing.
The following tags are available.
literal
The code inside <vb:literal>misc code</vb:literal> is treated as plain HTML. No curly-brace syntax or vb:tag markup is evaluated.
if
If the condition specified in <vb:if condition="condition">true result</vb:if> is true, the contents of the vb:if tags will be output, otherwise nothing will be output.
The following code is used in conjunction with vb:if.
elseif <vb:elseif condition="condition" />true result
else <vb:else />true result
comment
The code <vb:comment>a comment</vb:comment> is used where a comment is necessary but the usual <!-- comment → syntax is undesirable. The vb:comment tag allows its contents to be completely removed upon compiling, so they will not be delivered to the browser. This is useful for internal commenting.
each
The code <vb:each from="array" key="key" value="value"></vb:each>
will iterate through an existing array, in a similar manner to foreach.
The following are example uses of <vb:each>.
Array:
// We have an array of users available in PHP. // It looks like this: // $users = array( // 1 => array('username' => 'Adam', 'email' => '[email protected]'), // 2 => array('username' => 'Ben', 'email' => '[email protected]'), // 3 => array('username' => 'Chris', 'email' => '[email protected]') // ); [code] Template: [code] <!-- our 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>
<!-- will output... --> <li><a href="member.php?u=1">Adam</a></li> <li><a href="member.php?u=2">Ben</a></li> <li><a href="member.php?u=3">Chris</a></li>