vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 4 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=242)
-   -   vB4 Template Conditionals List (https://vborg.vbsupport.ru/showthread.php?t=231525)

moonclamp 09-04-2010 09:38 AM

Quote:

Originally Posted by moonclamp (Post 2093328)
I'll have a go with the above a bit later (when nobody is on my site), thanks :)

That didn't work either. I don't think the problem is the actual conditional though ... I just think that the plugin isn't accessing the profile information in order to apply it.

derbi 09-13-2010 02:29 PM

Quote:

Originally Posted by malmazan (Post 2054569)
I all templates i edit the above did not work.

What did work was:
Code:

<if condition="!in_array($GLOBALS[forumid], array(1,2,3))">Show this to forum 1, 2 and 3</vb:if>
Though your conditional may work in some other templates.

thanks for the correct code!

BirdOPrey5 09-13-2010 07:15 PM

Quote:

Originally Posted by derbi (Post 2097590)
thanks for the correct code!

There is no possible way the code you quoted works... It starts of as VB3 condition with just: <if condition="..."> and ends with the VB4 conditional </vb:if>... so that code won't work in any version... In VB3 you don't use the "vb:" at all, in VB4 you need to use it every time.

utahwildlife 09-28-2010 10:56 AM

1 Attachment(s)
I am trying to insert a an unique image heard for each of main page, HOME, Forum, What's New etc. How would you do that with condition?

Fore example: If you are on the Home page include home heard image, If you are on the Forum page include Forum image, and so on.

Please see attachments.

BirdOPrey5 09-28-2010 01:34 PM

Quote:

Originally Posted by utahwildlife (Post 2104170)
I am trying to insert a an unique image heard for each of main page, HOME, Forum, What's New etc. How would you do that with condition?

Fore example: If you are on the Home page include home heard image, If you are on the Forum page include Forum image, and so on.

Please see attachments.

You'd use this condition:

Code:

<vb:if condition="THIS_SCRIPT == 'calendar'">Show this only on calendar.php</vb:if>
You need to find out what the script names are for each page you want to show... I think home is "index" and forums is "forumdisplay"

So basically...
Code:


<vb:if condition="THIS_SCRIPT == 'index'">Image 1</vb:if>
<vb:if condition="THIS_SCRIPT == 'forumdisplay'">Index 2</vb:if>

Any other pages (like "showthread" and "calendar") won't show an image at all...

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

NEW POST HERE-- Stupid Auto Merge:rolleyes:


FYI This is a useful conditional if you want to hide the Facebook Like button in forums that aren't open to the public. If someone "Likes" a thread in a private forum people will be greeted with a no-permission "have to register" message which usually people will just get annoyed at rather than register. In fact if it's a private forum they may not even have access even after registering.

To use this conditional edit the SHOWTHREAD template... find the code:
Code:

<vb:if condition="$show['fb_likebutton']">
and change it too:
Code:

<vb:if condition="$show['fb_likebutton'] AND !in_array($threadinfo['forumid'], array(3,4,5))">
Where 3,4,5 are forum id's of the forums you want to hide the button in.

adom7 10-22-2010 10:34 AM

any "if condition" to show text/html only once on a certain place?

I am using CMS on my live site, and it has 1x2 content column on front page. I tried to place text/html/adsense code after first column however it always displays the text on all columns.

Any recommendations for that?

WreckRman2 12-15-2010 09:33 PM

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

what if I move someone to a group and then i wanted to show an image in the postbit for everyone to see IF that member is in a certain group.

BirdOPrey5 12-16-2010 12:39 AM

In postbit you can use this to see if a member is in usergroup x.

Code:

<vb:if condition="$post['usergroupid'] == x">
-stuff-
</vb:if>


bond010007 12-19-2010 09:54 AM

<font color="DarkGreen">Great work i love it
</font>

attroll 01-06-2011 06:45 PM

I have tried this code below in my footer ad location and it display in all my usergroups. Is there something wrong with the code?

Code:

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

Digital Jedi 01-06-2011 07:58 PM

Quote:

Originally Posted by attroll (Post 2145052)
I have tried this code below in my footer ad location and it display in all my usergroups. Is there something wrong with the code?

Code:

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

What did the code you used look like?

BirdOPrey5 01-06-2011 10:26 PM

Quote:

Originally Posted by attroll (Post 2145052)
I have tried this code below in my footer ad location and it display in all my usergroups. Is there something wrong with the code?

Code:

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

This exact code is working fine in my footer, only issue would be is if you somehow pasted it in-between some other <if> code... Also are you sure you are using vBulletin 4.x? This won't work on 3.x.

attroll 01-07-2011 02:35 AM

Damn, my bad. this web site that I am trying to get it to work on is VB3. Sorry guys. Thanks for the help anyways. It will have to wait until i upgrade to VB4.

Thnaks

BirdOPrey5 01-07-2011 02:53 AM

Quote:

Originally Posted by attroll (Post 2145251)
Damn, my bad. this web site that I am trying to get it to work on is VB3. Sorry guys. Thanks for the help anyways. It will have to wait until i upgrade to VB4.

Thnaks

The code for VB3 is very similar...

Code:

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

attroll 01-07-2011 03:35 AM

BirdOPrey5

Thank you very much. that will hold me over until I update to VB4.

shahryar_neo 01-08-2011 01:24 PM

How can I insert a banner after X posts in vb4 ?

Thanks .

BirdOPrey5 01-08-2011 05:25 PM

Assuming you mean in the postbit you'd use:
Code:

<vb:if condition="($post['postcount'] % 3) == 0">
banner code
</vb:if>

That would do it every 3rd post... change 3 to any number you want.

% is the modulus operator, it basically is the remainder in division- what you are saying in English is "when the post count is evenly divisible by 3, show the code."

stuartn 01-12-2011 10:52 PM

Well I'm really scratching my head I'm trying to get a conditional to work only if in a certain forum if but also by postcount.

Code:

<vb:if condition="!in_array($postinfo['forumid'], array(2,4))">
<vb:if condition="!in_array($post['postcount'], array(7,35,63,91,119,147,175,203))">
Ad Here for forum id's 2 & 4
</vb:if>
</vb:if>

The text is showing but at the wrong post count and in the wrong forums....

Any clues - I'm working on the postbit template.

BirdOPrey5 01-12-2011 11:46 PM

You're using the exclamation point "!" before "in_array" - the exclamation point means "NOT" so your first conditional reads "If NOT in forums 2 or 4, do something"

Just delete the !'s and you should be ok... also I'm not sure if $postinfo['forumid'] or just $post['forumid'] but one or the other should work.

stuartn 01-13-2011 08:04 AM

Found out which conditional works...in postbit

Code:

<vb:if condition="in_array($GLOBALS[forumid], array(2,4))">

smooth-c 01-18-2011 11:54 AM

Code:

<vb:if condition="$bbuserinfo[field7] == 'No'">
<vb:else />
<!-- Wy MyFav Album Start -->
<vb:if condition="$post['field6']"><style="text-align:left"></dt> <img src="{vb:stylevar imgdir_misc}/myfavalbum/{vb:raw post.field6}.png" align="middle" alt="Members Fav Album" border="" /></vb:if> 
<!-- Wy MyFav Album End -->
</vb:if>

I have a user profile field - No or Yes.

This doesn't seem to be working (it's in my postbit)

Any ideas? :)

Digital Jedi 01-18-2011 03:52 PM

In your postbit, you would use $post, not $bbuserinfo. $bbuserinfo is for showing you your own information anyway.

Edrondol 01-19-2011 06:07 PM

I'm attempting to create a tab with sublinks, with appropriate security.

I have the tab (Special access), with the drop down box (sublink 1, 2, 3) using this code:

I had to create a plugin with this code:

Code:

global $template_hook;
    $newTemplate = vB_Template::create('dropdown');
    $template_hook['navtab_end'] .= $newTemplate->render();

and a new template:

Code:

<li class="popupmenu">
    <a href="javascript://" class="popupctrl navtab" style="background:transparent url({vb:stylevar imgdir_misc}/arrow.png) no-repeat {vb:stylevar right} center; padding-right: 15px">Special Access</a>
    <ul class="popupbody popuphover">
    <li><a style="text-indent: 0px; color:{vb:stylevar navbar_selected_popup_body_a_Color}" href="http://domain.com.com/">Sublink 1</a></li>
    <li><a style="color:{vb:stylevar navbar_selected_popup_body_a_Color}" href="sublink2.php">SubLink 2</a></li>
    <li><a style="color:{vb:stylevar navbar_selected_popup_body_a_Color}" href="sublink3.php">SubLink 3</a></li>
    </ul>
    </li>


My question is how can I use a conditional where only those in the admin group can access it?

Digital Jedi 01-20-2011 03:12 AM

Quote:

Originally Posted by Edrondol (Post 2151578)
I'm attempting to create a tab with sublinks, with appropriate security.

I have the tab (Special access), with the drop down box (sublink 1, 2, 3) using this code:

I had to create a plugin with this code:

Code:

global $template_hook;
    $newTemplate = vB_Template::create('dropdown');
    $template_hook['navtab_end'] .= $newTemplate->render();

and a new template:

Code:

<li class="popupmenu">
    <a href="javascript://" class="popupctrl navtab" style="background:transparent url({vb:stylevar imgdir_misc}/arrow.png) no-repeat {vb:stylevar right} center; padding-right: 15px">Special Access</a>
    <ul class="popupbody popuphover">
    <li><a style="text-indent: 0px; color:{vb:stylevar navbar_selected_popup_body_a_Color}" href="http://domain.com.com/">Sublink 1</a></li>
    <li><a style="color:{vb:stylevar navbar_selected_popup_body_a_Color}" href="sublink2.php">SubLink 2</a></li>
    <li><a style="color:{vb:stylevar navbar_selected_popup_body_a_Color}" href="sublink3.php">SubLink 3</a></li>
    </ul>
    </li>


My question is how can I use a conditional where only those in the admin group can access it?

Just use the conditional for usergroups as shown in the first post and wrap it around the code you want that group to have access to in your template.

Dan2k3k4 01-20-2011 06:24 AM

Subbed

wpeloquin 02-01-2011 09:12 PM

Quote:

Originally Posted by TalkVirginia (Post 2010429)
I don't know if anyone has answered this or if you have already figured it out but you would need to handle this logic in your php code then render the variable accordingly.

how would one do this?

i have in my plugin the following code:
Code:

$rkc_getobject = $vbulletin->input->clean_gpc('r', 'rkc_object', TYPE_UINT);

$rkc_variable1 = $vbulletin->db->query_first("
    SELECT id, name, class_1, class_1_level
    FROM " . TABLE_PREFIX . "rkc_table AS rkc_table
    WHERE id = '" . $vbulletin->db->escape_string($rkc_getobject) . "'
");
$rkc_variable1['name'] = htmlspecialchars($rkc_variable1['name']);
$rkc_variable1['class_1'] = htmlspecialchars($rkc_variable1['class_1']);
$rkc_variable1['class_1_level'] = htmlspecialchars($rkc_variable1['class_1_level']);

And i want to display a conditional to accoplish something like the following:
Code:

<vb:if condition"($rkc_variable1['class_1']) == ClassType1">
    selected code goes here
</vb:if>

now, i know i can use
Code:

{vb:raw rkc_variable1.class_1}
to post the contents in a template, but if i cannot use {vb:raw} in a conditional, how would this goal be accomplished?

BirdOPrey5 02-01-2011 09:25 PM

When displaying the output of a variable you use:
Code:

{vb:raw rkc_variable1.class_1}
When testing in a condition you use:
Code:

$rkc_variable1['class_1']

wpeloquin 02-01-2011 09:51 PM

I have tried many combinations using that, including what seems to be the most likely (for comparing a string to a string)
Code:

<vb:if condition"($rkc_variable1['class_1']='ClassType1')">Success <vb:else />Failure </vb:if>
Now, if i change it to ='' then it will return "Failure", but if anything at all is there, then it returns "Success".

My goal is to use a <select> menu for set options when editing an object currently saved to the database. Example:
Code:

Choose Class Type: 
<select name="set_class1" id="set_class1" value="{vb:raw rkc_variable.class_1}">
<option value="">Choose Class</option>
<option value="ClassType1"<vb:if condition"($rkc_variable1['class_1']='ClassType1')"> selected="selected"</vb:if>>ClassType1</option>
<option value="ClassType2"<vb:if condition"($rkc_variable1['class_1']='ClassType2')"> selected="selected"</vb:if>>ClassType2</option>
</select>

Every combination of conditional i have tried just returns the bottom value that has the conditional in it, in this example ClassType2 would show even if the set value in the database was ClassType1. My guess is its just a syntax issue on getting the conditional phrased just right.

if it helps, i have the following code in the plugin to register it:
Code:

$templater = vB_Template::Create('rkc_customtemplate');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('rkc_getobject', $rkc_getobject);
$templater->register('rkc_variable1', $rkc_variable1);
print_output($templater->render());


BirdOPrey5 02-01-2011 10:15 PM

You definitely need equal signs in the conditionals...

Code:

<select name="set_class1" id="set_class1" value="{vb:raw rkc_variable.class_1}">
<option value="">Choose Class</option>
<option value="ClassType1"<vb:if condition="($rkc_variable1['class_1']='ClassType1')"> selected="selected"</vb:if>>ClassType1</option>
<option value="ClassType2"<vb:if condition="($rkc_variable1['class_1']='ClassType2')"> selected="selected"</vb:if>>ClassType2</option>
</select>

If that gives you an error try it without the single quotes around 'class_1' - sometimes they don't work right in templates.

wpeloquin 02-02-2011 06:45 PM

i apologize for the inaccurate entry in my code. the code in my template did have the "=". However, the same problem exists. if i put the conditional only on the ClassType2 option, then no matter what ClassType is actually in the database, ClassType2 will always be the selected option.

Example: say the options range from 1-5. If i put the conditional on 2, and then choose 4, 4 will be stored in the database, but when bringing up that object to edit, option 2 will be the default choice in the select menu. Clicking to edit the object should show all default data currently stored, so that if you choose to edit and then 'save' without making any changes, no changes will be made. in this scenario, option 4 is in the database, but if you choose edit and then save w/o physically making any changes, option 2 will replace option 4.
Code:

<select type="text" name="set_class1" id="set_class1" value="{vb:raw rkc_variable1.class1}" class="primary">
<option value="">Choose Class1</option>
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
<option value="Option4">Option4</option>
<option value="Option5">Option5</option>
<option value="Option6"<vb:if condition="($rkc_variable1['class1']='Option6')"> selected="selected"</vb:if>>Option6</option>
<option value="Option7">Option7</option>
<option value="Option8">Option8</option>
</select>

this code will always default the <select> to Class6, regardless of what the actual data in the table is. This is the problem i am having.

smooth-c 02-02-2011 07:10 PM

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

BirdOPrey5 02-02-2011 07:51 PM

$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.

wpeloquin 02-02-2011 08:35 PM

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>


smooth-c 02-03-2011 12:01 AM

Thank you so much, BirdOPrey5 - That worked perfect :)

ahmednadir 02-15-2011 02:55 PM

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

wonderfulwat 03-05-2011 02:24 AM

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' ">

BirdOPrey5 03-05-2011 11:47 AM

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

wonderfulwat 03-05-2011 06:25 PM

Thanks! :)

Essam 03-14-2011 03:29 PM

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 ?

BirdOPrey5 03-14-2011 03:58 PM

In threadbit it looks like the variable is just:
Code:

$thread['forumid']


All times are GMT. The time now is 07:24 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.02216 seconds
  • Memory Usage 1,870KB
  • 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
  • (37)bbcode_code_printable
  • (9)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete