Helpful Information
 
 
Category: Programming Articles
Simplify your Template Conditionals

If you want to be able to show/hide things in your templates based on Usergroups, you can either use something like:


<if condition="$bbuserinfo['usergroupid'] == '9' || $bbuserinfo['usergroupid'] == '10' || $bbuserinfo['usergroupid'] == '11'">


or


<if condition="in_array($bbuserinfo[usergroupid], array(9,10,11))">


...but if those usergroup ids ever change, or you want to add more groups to the array, it could get time consuming, especially if you have multiple styles.

Wouldn't it be easier to be able to use:


<if condition="is_paid_member()">

?

Well now you can!

In includes/functions.php, find:

// ###################### Start build datastore #######################
function build_datastore($title = '', $data = '')
{
global $DB_site;

if ($title != '')
{
$DB_site->query("
REPLACE INTO " . TABLE_PREFIX . "datastore
(title, data)
VALUES
('" . addslashes(trim($title)) . "', '" . addslashes(trim($data)) . "')
");
}
}


After, add

function is_paid_member($usergroupid = 0) // replace is_paid_member with your new function/condition
{
global $bbuserinfo;

if ($usergroupid == 0)
{
$usergroupid = $bbuserinfo['usergroupid'];
}
return in_array($usergroupid, array(9, 10, 11)); // replace with the Usergroup ids you want
}


In adminfunctions_template.php find:


// vBulletin-defined functions
'can_moderate', // obvious one
'can_moderate_calendar', // another obvious one
'exec_switch_bg', // harmless function that we use sometimes
'is_browser', // function to detect browser and versions
'is_member_of', // function to check if $user is member of $usergroupid

under, add:


'is_paid_member', // function to check if $user is member of paid member groups


Save and upload includes/functions.php and adminfunctions_template.php and you are done.

You can now wrap
<if condition="is_paid_member()"></if>
around whatever you want to show to people in Usergroups 9, 10 or 11...and if you need to add usergroup 12 to the list, all you need to do is add it in the function.

Hoorah!

ooo nice:)

I feel confident when I say this won't work right away....I think :p
I only saw this when looking through vB files that there's some array of safe functions that the template parses, and it ignores everything else... I might be wrong, so dont shoot me! ;)

Your thread title doesn't really simplify all template conditionals as it would imply. Something along the lines of 'Easy template conditional to select users from particular usergroups'. Thanks for releasing btw :)

Good idea, but you can simplify it even more by adding it as an Admin CP Options settings variable. :)

Because if you think changing a template is a pain when you want to add usergroups, at least you can do it anywhere. Changing a PHP file to add usergroups is much harder. ;)

You're better off adding the group in your phpinclude_start template -

e.g.

$specialgroupid = "1,2,3,4,5";

Then using that anywhere in your templates:

<if condition="in_array($bbuserinfo[usergroupid], array($specialgroupid))">

Then just change the numbers in your phpinclude_start template anytime. :)

I feel confident when I say this won't work right away....I think :p
I only saw this when looking through vB files that there's some array of safe functions that the template parses, and it ignores everything else... I might be wrong, so dont shoot me! ;)
Oopsie. You're right...I realised this as I was falling asleep last night. adminfunctions_template.php needs an edit too. :)

Sorted.

@Dean: I know...I'm crap at descriptive titles that don't run the length of 2 pages. :) 'Add new Usergroup Macros for Template Conditionals' was one I played with. Feel free to edit the title to something a bit better.

Really nice! I was wondering how to do this a while back!
/me installs :)

this thread was of some use. Thanks.










privacy (GDPR)