The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
hide a specific block from the sidebar
Hi,
I want to know how to hide a certain block from the sidebar because I'm trying to test hiding blocks from a specific style using this: Code:
<vb:if condition="THIS_SCRIPT =='index' AND $bbuserinfo['styleid']==10"> any idea how to do that?? |
#2
|
|||
|
|||
Just enclose your block of code within a span or division and then toggle the display from NONE to BLOCK whenever you want to hide or display your code:
Here the span is hidden via the style attribute of "display:none" Code:
<span id="myspan" style="display:none;"> Code:
<span id="myspan" style="display:block;"> Code:
function LoadElement(eid) { var element = document.getElementById(eid); element.style.display = 'block'; } Code:
function HideElement(eid) { var element = document.getElementById(eid); element.style.display = 'none'; } Then to display the span: Code:
LoadElement('myspan'); and to hide the span: Code:
HideElement('myspan'); |
#3
|
|||
|
|||
Thanks @Disco_Stu
The solution is good, but not recommended by vbulletin. I have tried similar solution in the past using display:none property, but I was told to avoid such thing for some reason. I'm still looking for a plugin type solution to make things easier |
#4
|
|||
|
|||
I'm not sure why you were told to avoid using what is a standard style attribute used by millions of web sites but to each their own.
|
#5
|
||||
|
||||
The only reason I can think you were told that is because the block will still actually be in the source code of the page. So, if you had information in there that you didn't want others to see, they could still see it in the page source. Or, if the reason you don't want to block is to save resources (queries, etc), then hiding the block won't do that either.
|
#6
|
|||
|
|||
if you are trying to hide a display due to a security issue then an easy way to do that is to store the code in a DB table and then when you want to display it just read each line of code and populate a span or division with the contents of the DB table.
For example, let's say you have some code that only user 123 should see. 1) Test for user 123 2) If user 123 then load up a variable called myhiddencode with some code read from a DB table. Then populate a division with that code Code:
document.getElementById(mydivision').innerHTML = '<div >' + myhiddencode + '</div>' ; Code:
document.getElementById(mydivision').innerHTML = '<div > </div>' ; Then only user 123 will see the code and it will not be part of the page source for any other user so they cannot see it even if they dump the entire page source. |
#7
|
|||
|
|||
Quote:
So create a new template for "block_html", lets call it "block_html_new" and then insert your conditional. I placed optional conditionals in the two most likely positions, for reference, in the markup below. (I know you tried this, but I think you missed a step.) Contents of newly created template "block_html_new" Code:
<!-- HTML/Template Wrapper Conditional - START --> <vb:if condition="THIS_SCRIPT =='index' AND $bbuserinfo['styleid']==3"> <li> <div class="block smaller"> <div class="blocksubhead"> <a class="collapse" id="collapse_block_html_{vb:raw blockinfo.blockid}" href="{vb:raw relpath}#top"><img alt="" src="{vb:stylevar imgdir_button}/collapse_40b.png" id="collapseimg_html_{vb:raw blockinfo.blockid}"/></a> <span class="blocktitle">{vb:raw blockinfo.title}</span> </div> <div class="widget_content blockbody floatcontainer"> <div id="block_html_{vb:raw blockinfo.blockid}" class="blockrow"> <!-- Block content only conditional - START --> <vb:if condition="THIS_SCRIPT =='index' AND $bbuserinfo['styleid']==13"> Styleid: {vb:raw bbuserinfo['styleid']} </vb:if> <!-- Block content only conditional - END --> {vb:raw content} <!-- In this example, the variable will return "<dummy></dummy>" --> </div> </div> </div> <div class="underblock"></div> </li> </vb:if> <!-- HTML/Template Wrapper Conditional - END --> IMPORTANT !!! ------------------- 1.) Make sure you insert text or some dummy tag in the "content" box in the "Block Manager" --> "Edit Box" dialogue. If the text-box is empty the block will not be processed. [NOTE: vb-conditionals will not work in this text-box -- the HTML dialog box on Block Manager --> Edit. Code:
<dummy></dummy> or <!-- comment --> or <div>actual content</div> |
#8
|
||||
|
||||
I like to not render what I don't want to show, instead of first rendering and then hiding it
|
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|