Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 4 Articles
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
vB4 Template Conditionals List
BBR-APBT's Avatar
BBR-APBT
Join Date: Feb 2009
Posts: 946

 

Maryland
Show Printable Version Email this Page Subscription
BBR-APBT BBR-APBT is offline 12-28-2009, 10:00 PM

I put this together because it seems lots of people are having problems with the new syntax for conditionals.

First off remember you can not use {vb:raw var} in template conditionals.

Show only members:
Code:
<vb:if condition="$show['member']">Show this to members only</vb:if>

Show only guest:
Code:
<vb:if condition="$show['guest']">Show this to guest only</vb:if>

Show specific user groups :
Code:
<vb:if condition="is_member_of($bbuserinfo, 1,2,3)">Show this to user group 1, 2, and 3</vb:if>

Show one member:
Code:
<vb:if condition="$bbuserinfo['userid'] == 318713">Show this only to the member with the user id of 318713</vb:if>

Show every one but one member:
Code:
<vb:if condition="$bbuserinfo['userid'] != 318713">Show this to every one but the member with the user id of 318713</vb:if>

Show only moderators of any forum:
Code:
<vb:if condition="can_moderate()">Show this to all moderators</vb:if>
Show Moderator of one forum: Remember to change x
Code:
<vb:if condition="can_moderate($forum['x])">Show this if moderator is moderator of the forum with the id of x</vb:if>

Show Moderator of current forum:
Code:
<vb:if condition="can_moderate($forum['forumid'])">Show this to the moderator of the current forum</vb:if>

Show in one forum: Remember to change x
Code:
<vb:if condition="$forum[forumid] == x">Show this if forum id is x</vb:if>

Show is every forum but one: Remember to change x
Code:
<vb:if condition="$forum[forumid] != x">Show this if forum id is not x</vb:if>

Show in several forums:
Code:
<vb:if condition="in_array($forum['forumid'], array(1,2,3))">Show this to forum 1, 2 and 3</vb:if>

Show in only one file: Look for define('THIS_SCRIPT', 'calendar'); in the top of the php file you want it to show in.
Code:
<vb:if condition="THIS_SCRIPT == 'calendar'">Show this only on calendar.php</vb:if>

Show in every file but one: Look for define('THIS_SCRIPT', 'calendar'); in the top of the php file you do not want it to show in.
Code:
<vb:if condition="THIS_SCRIPT != 'calendar'">Show this only on calendar.php</vb:if>

If $customvar is set:
Code:
<vb:if condition="$customvar">Show this if $customvar is set</vb:if>

If $customvar equals:
Code:
<vb:if condition="$customvar == blah">Show this if $customvar equals blah</vb:if>

If $customvar does not equal:
Code:
<vb:if condition="$customvar != blah">Show this if $customvar does not equal blah</vb:if>

vBulletin else statement:
Code:
<vb:if condition="$show['guest']">
Show this to only guest.
<vb:else />
Show this to all registered users
</vb:if>

vBulletin else if statement:
Code:
<vb:if condition="$show['guest']">
Show this to only guest.

<vb:elseif condition="is_member_of($bbuserinfo, 5,6)" />
Show this to user group 5 and 6 which is  mods and admins

<vb:else />
Show this to all registered users

</vb:if>

This is all that I can think of right now off the top of my head.
Please feel free to add any I forgot and I will add them to this list and give you credit.
Reply With Quote
  #152  
Old 02-02-2011, 07:10 PM
smooth-c smooth-c is offline
 
Join Date: Jan 2008
Posts: 226
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello there Thank you Digital Jedi!

I'm currently running a board under vB3.8 and will be upgrading shortly to the vB4.1.x series. Right now, we use a fluid banner.

We would like to approach our upgrade with a new design but still retain certain features that our members love, one of which - the fluid banner.

I've created a radio button in the user profile fields, so members can switch between which header style they'd like.

This is the code I've edited/changed in the header template.

Code:
<vb:if condition="$post[field8] == 'Yes'">
<div id="headerFill"><div id="headerL"></div><div id="headerR"></div></div>
<vb:else />
<div><a name="top" href="{vb:raw vboptions.forumhome}.php{vb:raw session.sessionurl_q}" class="logo-image"><img src="{vb:stylevar titleimage}" alt="{vb:rawphrase x_powered_by_vbulletin, {vb:raw vboptions.bbtitle}}" /></a></div>
</vb:if>
In theory, that should work? But I think the variable is wrong for the condition. Unless the field is specifically set to 'Yes' (default being 'No'..) then it should show the standard logo, correct?

Any help appreciated!

Greg
Reply With Quote
  #153  
Old 02-02-2011, 07:51 PM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

$post won't work in the header, $post is only defined inside a post... Also it the value of the poster not the value of the person viewing.

What you want is $bbuserinfo[field8], that holds the value of field8 for the user currently logged in.

As for the logic it would show
Code:
<div id="headerFill"><div id="headerL"></div><div id="headerR">
Only if the user specifically set this option to Yes. If it's set to "No" OR they never set the option it will show:
Code:
<div><a name="top" href="{vb:raw vboptions.forumhome}.php{vb:raw session.sessionurl_q}" class="logo-image"><img src="{vb:stylevar titleimage}" alt="{vb:rawphrase x_powered_by_vbulletin, {vb:raw vboptions.bbtitle}}" /></a></div>
instead.

This is good logic if you want users to have to "opt in" to this. If you wan't them to "opt-out" though (that is, display the first line unless they specifically said "No" then you'd be better off using the condition:
Code:
 <vb:if condition="$bbuserinfo[field8] != 'No'">
There's also the underlying issue that the header HTML is completely different than VB3 and I doubt any code you have for VB3 could work for VB4. VB4 has a stylevar for the banner background.
Reply With Quote
  #154  
Old 02-02-2011, 08:35 PM
wpeloquin wpeloquin is offline
 
Join Date: May 2006
Location: Behind you...
Posts: 143
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I would like to thank Valter for his contribution to solving my problem, even though he does not realize he helped! (I will PM him a thank you, as i found my working solution while browsing through a plugin written by him), and to you BirdOfPrey for your help as well.

My Solution:

First, i added another table with the data for the <select>. This will actually serve 2 purposes, 1st being solving my issue, and the 2nd allows me to create another admin page that will allow me to update the data in that table.


Inside the plugin code i added
Code:
...

$vbulletin->db->hide_errors();
$getlist= $vbulletin->db->query_read("
    SELECT class_id, class_desc
    FROM " . TABLE_PREFIX . "class AS class
    ORDER BY class_desc ASC
");
$vbulletin->db->show_errors(); 
while ($class = $vbulletin->db->fetch_array($getlist))
{
    $class_id = $class['class_id'];
    $class_name = $class['class_desc'];
    eval('$class_selector .= " <option value=\"'.$class['class_id'].'\" " . iif($rkc_variable1[class_1]==$class[class_id]," selected=\"selected\"","").">'.htmlspecialchars($class['class_desc']).'</option> ";');
}

...

    $templater->register('class_selector', $class_selector);
    $templater->register('class_name', $class_name);
    $templater->register('class_id', $class_id);
Then in my template, i added the following code:
Code:
<td>
{vb:rawphrase class1_phrase}: <select id="set_class1" name="set_class1">{vb:raw class_selector}</select>
</td>
Reply With Quote
  #155  
Old 02-03-2011, 12:01 AM
smooth-c smooth-c is offline
 
Join Date: Jan 2008
Posts: 226
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you so much, BirdOPrey5 - That worked perfect
Reply With Quote
  #156  
Old 02-15-2011, 02:55 PM
ahmednadir ahmednadir is offline
 
Join Date: Feb 2007
Location: Watford
Posts: 51
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Nice post, very useful thank you very much
I just updated again to vb 4 and things got a little complicated, thanks for this great post
Reply With Quote
  #157  
Old 03-05-2011, 02:24 AM
wonderfulwat wonderfulwat is offline
 
Join Date: Jun 2010
Posts: 58
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How would you clean this up into an array?

Code:
<vb:if condition="$vbulletin->nodeid != 1 AND THIS_SCRIPT != 'blog' AND THIS_SCRIPT != 'entry' AND THIS_SCRIPT != 'misc' AND THIS_SCRIPT != 'group' AND THIS_SCRIPT != 'calendar' AND THIS_SCRIPT != 'member' AND THIS_SCRIPT != 'usercp' AND THIS_SCRIPT != 'profile' AND THIS_SCRIPT != 'sendmessage' AND THIS_SCRIPT != 'register' ">
Reply With Quote
  #158  
Old 03-05-2011, 11:47 AM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

try...

Code:
<vb:if condition="$vbulletin->nodeid != 1 AND !in_array(THIS_SCRIPT, array('blog' , 'entry', 'misc', 'group'))">
and so on with your script names....
Reply With Quote
  #159  
Old 03-05-2011, 06:25 PM
wonderfulwat wonderfulwat is offline
 
Join Date: Jun 2010
Posts: 58
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks!
Reply With Quote
  #160  
Old 03-14-2011, 03:29 PM
Essam Essam is offline
 
Join Date: Aug 2003
Posts: 41
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

i have been trying to use $threadinfo[forumid] and $forum[forumid] in threadbit in a condition but it doesnt work .. is there any other vars i can use ?
Reply With Quote
  #161  
Old 03-14-2011, 03:58 PM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

In threadbit it looks like the variable is just:
Code:
 $thread['forumid']
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 04:35 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05045 seconds
  • Memory Usage 2,368KB
  • Queries Executed 26 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (27)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (2)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (40)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete