The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
||||
|
||||
[RESOLVED] Conditions being ignored when viewed by guest
I am editing a template with the following conditional structure:
HTML Code:
<vb:if condition="$show['dbtech_thanks_area']"> <vb:if condition="$show['dbtech_thanks_li']"> <li class="postbitlegacy postcontainer dbtech_thanks_container<vb:if condition="$post['userid'] == $bbuserinfo['userid']"> shown</vb:if>"> <vb:else /> <div<vb:if condition="!$show['dbtech_thanks_lineafter']"> class="signature dbtech_thanks_container<vb:if condition="$post['userid'] == $bbuserinfo['userid']"> shown</vb:if>"</vb:if> style="clear:both;"> </vb:if> <vb:if condition="!$vboptions['dbtech_thanks_cloud_displaystyle']"> <div class="posthead"> <span class="postdate">Post Thanks<vb:if condition="$extrainfo"> - {vb:raw extrainfo}</vb:if></span> </div> </vb:if> <div class="postdetails" id="dbtech_thanks_entries_{vb:var post.postid}"> {vb:raw entries} </div> <vb:if condition="$actions"> <div class="postfoot"> <div class="textcontrols"> <span class="postlinking"> {vb:raw actions} </span> </div> </div> </vb:if> <vb:if condition="$show['dbtech_thanks_li']"> </li> <vb:else /> </div> <vb:if condition="$show['dbtech_thanks_lineafter']"><div class="signature"> </div></vb:if> </vb:if> </vb:if> HTML Code:
<vb:if condition="$post['userid'] == $bbuserinfo['userid']"> shown</vb:if> Once again, it works properly when logged in, but not when viewing as a guest. How can I resolve this? |
#2
|
||||
|
||||
Try changing it to:
HTML Code:
<vb:if condition='$post["userid"] == $bbuserinfo["userid"]'> shown</vb:if> |
#3
|
|||
|
|||
The condition $post['userid'] == $bbuserinfo['userid'] checks if the userid of the post is the same as the userid of the current logged in user. Guests have a userid of 0 which is why it never (should) evaluates to true.
Have you tried changing == to ===? That will also match the data type. |
#4
|
||||
|
||||
Quote:
--------------- Added [DATE]1500316988[/DATE] at [TIME]1500316988[/TIME] --------------- Quote:
Once again, the code works when logged in. It fails when logged out. |
#5
|
|||
|
|||
So if I understand you correctly, your condition always evaluates to true when a guest is viewing it? Thus the class "shown" is always added?
Is the $post variable available in the template? Also, try putting the following in your template before the div that contains the if condition so you can see what it outputs: HTML Code:
{vb:raw post.userid} -> {vb:raw bbuserinfo.userid} |
#6
|
||||
|
||||
No, you are not understanding.
It behaves as if the condition tag does not exist, even if the condition in the quotes is "true === false", instead of my condition I would like to use. I can access the variables and output them to the screen using {vb:raw post.userid} and {vb:raw bbuserinfo.userid}. They output correctly, including for guests. The variables exist in the template. Furthermore, the code: HTML Code:
<vb:if condition="true === false"> shown</vb:if> In other words, it is behaving as if the conditional tag is not there, and just shows the contents. It has nothing to do with the actual statements in the conditions. --------------- Added [DATE]1500332271[/DATE] at [TIME]1500332271[/TIME] --------------- It appeared to be the location of the statement. It works if it is at a tier 2 nesting or global if. I believe there is a bug related to nesting and guest viewing. |
#7
|
||||
|
||||
RESOLVED!
The issue was a piece of JavaScript that was adding the shown class after the page had loaded. The reason it did so even if the user was logged out, was because the condition was to find the Add Thanks button, and if it isn't there, add the shown class. The button isn't there for guests, so it added shown to everything. I apologize for wasting everyone's time. |
Благодарность от: | ||
MarkFL |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|