vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Programming Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=188)
-   -   Simplify your Template Conditionals (https://vborg.vbsupport.ru/showthread.php?t=72556)

kall 12-05-2004 10:00 PM

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:

Code:

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

Code:

<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:

Code:

<if condition="is_paid_member()">
?

Well now you can!

In includes/functions.php, find:
PHP Code:

// ###################### 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
PHP Code:

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(91011));  // replace with the Usergroup ids you want


In adminfunctions_template.php find:

PHP Code:

// 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:

PHP Code:

'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
Code:

<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!

AN-net 12-06-2004 08:56 AM

ooo nice:)

Revan 12-06-2004 09:16 AM

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! ;)

Dean C 12-06-2004 09:27 AM

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 :)

Erwin 12-06-2004 09:43 AM

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. :)

kall 12-06-2004 07:59 PM

Quote:

Originally Posted by Revan
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.

Koutaru 12-06-2004 09:18 PM

Really nice! I was wondering how to do this a while back!
[high]* Koutaru installs :)[/high]

neocorteqz 01-19-2005 12:49 PM

this thread was of some use. Thanks.


All times are GMT. The time now is 09:05 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01155 seconds
  • Memory Usage 1,743KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_code_printable
  • (4)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (8)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete