View Full Version : Parsing Template Tags (Functions)
php4ever
03-30-2007, 12:05 PM
Is there any specific requirement for parsing vBulletin code in templates such as position above or below any of the default tags?
I've taken the code from the "navbar" template and placed it in a left column which I then took code from the bottom of the FORUMHOME in an attempt to get stats to also show up in the left column. However the following code does not parse.
After searching for many hours to find examples in this forum and the main vBulletin forum I'm dont see any solutions.
$vbphrase[threads]: $totalthreads,
$vbphrase[posts]: $totalposts,
$vbphrase[members]: $numbermembers<if condition="$show['activemembers']">,
<span title="<phrase 1="$vboptions[activememberdays]">$vbphrase[within_the_last_x_days]</phrase>">$vbphrase[active_members]: $activemembers</span>
Any direction would be appreciated
calorie
03-30-2007, 12:24 PM
Look at the end of the main vB index.php file and note how the 'board statistics' variables are set before the two fetch_template calls for the navbar and FORUMHOME templates, i.e., the variables used in a template need to be set to their values before the template is called if you want said variables to show their values.
php4ever
03-30-2007, 12:35 PM
Ok, now a little help understanding then, I'm trying to grasp the structure methodology of vBulletin.
Am I correct in assuming that what looks like php function code in vBulletin is actually what it appears to be? template tags?
What I mean by that is many php programs use template tags such as {template_tag_here} which would parse a specific function specific to that tag. or <?php mosMainBody(); ?> as it is in Joomla for example. In WordPress its quite similar as template tags include things like
<?php get_header(); ?>
<?php get_footer(); ?>
The problem is that it tends to confuse people because it looks like PHP function calls, but in all actuality these are template tags.
calorie
03-30-2007, 01:52 PM
PHP code doesn't get parsed in templates. The variables you see in templates, outside of the conditionals, hold values to be shown on screen. These variables need to be set before the call to the template if they are to show. Consider this example:
The PHP file:
<?php
// some vB prep here
$foobar = 5;
eval('print_output("' . fetch_template('barfoo') . '");');
?>
The template:
<!-- template barfoo -->
<html><body>
$foobar
</body></html>
<!-- /template barfoo -->
The output:
'5' is shown on screen
The <if condition=""> <else /> </if> template conditionals do allow a limited number of functions. The variables used in conditionals also need to be set before the call to the template if they are to be accurately evaluated. Consider this example:
The PHP file:
<?php
// some vB prep here
$foobar = 5;
eval('print_output("' . fetch_template('barfoo') . '");');
?>
The template:
<!-- template barfoo -->
<html><body>
<if condition="in_array($foobar, array(1,2,3,4,5))">
$foobar is in the array
<else />
$foobar is not in the array
</if>
</body></html>
<!-- /template barfoo -->
The output:
'5 is in the array' is shown on screen
The functions you can use in template conditionals are as follows:
PHP functions:
in_array, is_array, is_numeric, isset, empty,
defined, array
vBulletin functions:
can_moderate, can_moderate_calendar,
exec_switch_bg, is_browser, is_member_of
Plus you can add your own using the template_safe_functions hook.
More information can be found here (http://www.vbulletin.com/docs/html/templates_basic), here (http://www.vbulletin.com/docs/html/template_conditionals), and here (http://www.vbulletin.com/docs/html/functions_in_conditionals).
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.