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
  #232  
Old 06-15-2011, 02:21 AM
Mr_Running Mr_Running is offline
 
Join Date: May 2010
Posts: 536
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

what are the conditions so only friends can see...and yes logged in to see...
Reply With Quote
  #233  
Old 06-15-2011, 09:08 PM
Bisha's Avatar
Bisha Bisha is offline
 
Join Date: Mar 2006
Posts: 102
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by BirdOPrey5 View Post
Unfortunately preregistering variables was never something I mastered, one of the big reasons I prefer VB 3.x over VB 4.x. I just try to avoid doing anything where I have to preregister.

This is the article that is supposed to help: https://vborg.vbsupport.ru/showthread.php?t=228078

I'm not sure what yo mean by POSTBIT A and B?
If I make a plugin for postbit_legacy, on what Hook Location I have to send?

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

The only template $onlinestatus is used is postbit_onlinestatus.

postbit_legacy is a template, you wouldn't make a plugin on a template, you'd make a plugin on a hook. Some hooks are postbit_display_start and posbit_display_complete. There are many others of course but I'd imagine you'd need to make a plugin on one of them.
Reply With Quote
Благодарность от:
BCP Hung
  #235  
Old 06-17-2011, 09:51 AM
Tautmann Tautmann is offline
 
Join Date: Jan 2011
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Great! Thank you...
Reply With Quote
  #236  
Old 06-24-2011, 02:11 PM
kether1 kether1 is offline
 
Join Date: Jun 2006
Posts: 232
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hey Joe, if you are still reading this thread, I have an update and a question.

As I said, I posted at vbadvanced.com and finally got a response that helped a bit, but I haven't solved the complete issue. I am so close and was hoping if you see what I have you could offer a suggestion:

SO, I have finally got the custom field to display to both the admin and the user who posted it. Now, I need an else statement that tells the forum to not display it to any one else.

Here is what I have:

Code:
<vb:if condition="$field['fieldid'] == 5 AND (is_member_of($bbuserinfo, 6) OR $bbuserinfo['userid'] == $entry['userid'])">
                                <div>{vb:raw entry.field5}</div>
</vb:if>
I need an else statement to follow this that says if anyone else is viewing this, do not post the information in {vb:raw entry.field5}.

Any ideas?

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

Quote:
Originally Posted by kether1 View Post
Hey Joe, if you are still reading this thread, I have an update and a question.

As I said, I posted at vbadvanced.com and finally got a response that helped a bit, but I haven't solved the complete issue. I am so close and was hoping if you see what I have you could offer a suggestion:

SO, I have finally got the custom field to display to both the admin and the user who posted it. Now, I need an else statement that tells the forum to not display it to any one else.

Here is what I have:

Code:
<vb:if condition="$field['fieldid'] == 5 AND (is_member_of($bbuserinfo, 6) OR $bbuserinfo['userid'] == $entry['userid'])">
                                <div>{vb:raw entry.field5}</div>
</vb:if>
I need an else statement to follow this that says if anyone else is viewing this, do not post the information in {vb:raw entry.field5}.

Any ideas?

Thanks,
Kether
An else statement is if you want to display alternative information, an example would be:

Code:
<vb:if condition="$field['fieldid'] == 5 AND (is_member_of($bbuserinfo, 6) OR $bbuserinfo['userid'] == $entry['userid'])">
                                <div>{vb:raw entry.field5}</div>
<vb:else />
<div>You are not allowed to see this field.</div>
</vb:if>
You do not need an "else" to tell it not show anything, that is implied in the original IF to behgin with.
Reply With Quote
  #238  
Old 06-24-2011, 03:01 PM
kether1 kether1 is offline
 
Join Date: Jun 2006
Posts: 232
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by BirdOPrey5 View Post
An else statement is if you want to display alternative information, an example would be:

Code:
<vb:if condition="$field['fieldid'] == 5 AND (is_member_of($bbuserinfo, 6) OR $bbuserinfo['userid'] == $entry['userid'])">
                                <div>{vb:raw entry.field5}</div>
<vb:else />
<div>You are not allowed to see this field.</div>
</vb:if>
You do not need an "else" to tell it not show anything, that is implied in the original IF to behgin with.
Oh, then I suppose I have another issue then. The custom field is still displayed to everyone. If logged in as the member who posted it or as the admin, it is displays correctly. For everyone else, the information is just there. I was hoping I could use an else statement with an "!=" in it somehow and make it not display.

I really appreciate your help. Wish I could get a response as fast in the vba site.

Thanks,
Kether

-----------

I wonder if instead of editing a template, I should be editing a php file and putting the condition around a specific field ID. So, if that field ID is called, it will only be displayed to the conditions of the field. Not sure here.... just guessing. Thoughts?
Reply With Quote
  #239  
Old 06-24-2011, 03:43 PM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Editing the PHP wouldn't be of any help- any condition you can test in PHP you can test in the template.

The only part of your conditional I don't know off hand is $entry['userid']- I've never used it before so I don't know what data it's returning.

In the template put this code:

Code:
{vb:raw entry.userid}
That should have it "print out" the value of the variable so you can see exactly what is stored in it. My guess is it's not storing the value you expect. Make sure to test it with multiple users.

EDIT- Looking over your code are you sure it's $field['fieldid'] and not $entry['fieldid'] ?
Reply With Quote
  #240  
Old 06-24-2011, 03:59 PM
kether1 kether1 is offline
 
Join Date: Jun 2006
Posts: 232
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by BirdOPrey5 View Post
Editing the PHP wouldn't be of any help- any condition you can test in PHP you can test in the template.

The only part of your conditional I don't know off hand is $entry['userid']- I've never used it before so I don't know what data it's returning.

In the template put this code:

Code:
{vb:raw entry.userid}
That should have it "print out" the value of the variable so you can see exactly what is stored in it. My guess is it's not storing the value you expect. Make sure to test it with multiple users.

EDIT- Looking over your code are you sure it's $field['fieldid'] and not $entry['fieldid'] ?
I copied what was given to me at vba.com. So, yes, $field['fieldid'] is correct. I will try it with $entry['fieldid'] to see if it makes any difference. (Wouldn't that be lovely if it fixed it!?!)

$entry['userid'] - I believe is returning the user who posted the article. (But again- I am guessing as I copied what suggested.) I will work on it some more and post back anything I find. Thanks Joe!!

Kether

--------------- Added [DATE]1308935315[/DATE] at [TIME]1308935315[/TIME] ---------------

Quote:
Originally Posted by BirdOPrey5 View Post
In the template put this code:

Code:
{vb:raw entry.userid}
That should have it "print out" the value of the variable so you can see exactly what is stored in it. My guess is it's not storing the value you expect. Make sure to test it with multiple users
Tested it with multiple users from different user groups. The results returned are the same. A number: 122
Not sure what to make of that as it is not a field id nor is it a user id. But it always placed it where i put that code.

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

Sorry man... VBA Dynamics is a commercial mod I just don't have access to so I don't know how it's designed or what fields may be available.

If there is a php hook available somewhere you could make a plugin with this code, it will print out all available fields for $entry and see if any of them match the userid.

Code:
echo "<pre>";
print_r ($entry);
echo "</pre>";
But don't do it while your forum is on (use a test forum if you have one) otherwise everyone will see the code output.
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 01:26 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.05429 seconds
  • Memory Usage 2,370KB
  • 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
  • (26)bbcode_code
  • (5)bbcode_quote
  • (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
  • (41)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)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