The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
How To Create Collapsable Boxes
This tutorial explains how to create collapsable boxes throughout vBulletin. For the purpose of this tutorial, I will explain how the first part of the 'What's Going On' box is structured (ie WOL on forumhome) and how you can use this technique to create stand alone collapsable boxes or add sections to additional boxes (eg Forum Statistics as part of the What's Going On box) Part One: Decipering the What's Going On box In your forumhome template, the following code exists by default: Code:
<!-- what's going on box --> <table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center"> <thead> <tr> <td class="tcat" colspan="2">$vbphrase[whats_going_on]</td> </tr> </thead> <if condition="$show['loggedinusers']"> <!-- logged-in users --> <tbody> <tr> <td class="thead" colspan="2"> <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_activeusers')"><img id="collapseimg_forumhome_activeusers" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_activeusers].gif" alt="" border="0" /></a> <a href="online.php$session[sessionurl_q]" rel="nofollow">$vbphrase[currently_active_users]</a>: $totalonline (<phrase 1="$numberregistered" 2="$numberguest">$vbphrase[x_members_and_y_guests]</phrase>) </td> </tr> </tbody> <tbody id="collapseobj_forumhome_activeusers" style="$vbcollapse[collapseobj_forumhome_activeusers]"> <tr> <td class="alt2"><a href="online.php$session[sessionurl_q]" rel="nofollow"><img src="$stylevar[imgdir_misc]/whos_online.gif" alt="$vbphrase[view_whos_online]" border="0" /></a></td> <td class="alt1" width="100%"> <div class="smallfont"> <div style="white-space: nowrap"><phrase 1="$recordusers" 2="$recorddate" 3="$recordtime">$vbphrase[most_users_ever_online_was_x_y_at_z]</phrase></div> <div>$activeusers</div> </div> </td> </tr> </tbody> <!-- end logged-in users --> </if> Firstly, you will notice that the code starts with a table row, the same as any other table anywhere in vBulletin. This is essential. However, before the Code:
<tr> Code:
<thead> All the code until Code:
</thead> Next we have the condition for the content section to show. For the purposes of this tutorial, the conditional is being disregarded. This is then followed by the following code: Code:
<tbody> <tr> <td class="thead" colspan="2"> <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_activeusers')"><img id="collapseimg_forumhome_activeusers" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_activeusers].gif" alt="" border="0" /></a> <a href="online.php$session[sessionurl_q]" rel="nofollow">$vbphrase[currently_active_users]</a>: $totalonline (<phrase 1="$numberregistered" 2="$numberguest">$vbphrase[x_members_and_y_guests]</phrase>) </td> </tr> </tbody> First there is the Code:
<tbody> Code:
<tr> Code:
<td> The next section is essential Code:
<a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_activeusers')"><img id="collapseimg_forumhome_activeusers" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_forumhome_activeusers].gif" alt="" border="0" /></a> Probably the most important section of this code, and the bit that is the cause for most problems are the labels Code:
forumhome_activeusers Code:
collapseimg_forumhome_activeusers Code:
collapseimg_ When you are creating a new collapsable box, you need to give it a name. The length of the name is not important, as long as you ensure that every time it is used, it is identical. In the example used for this tutorial (the WOL on forumhome) the name used is Code:
forumhome_activeusers Some examples of names for collapsable boxes are:
The next section is Code:
<a href="online.php$session[sessionurl_q]" rel="nofollow">$vbphrase[currently_active_users]</a>: $totalonline (<phrase 1="$numberregistered" 2="$numberguest">$vbphrase[x_members_and_y_guests]</phrase>) </td> </tr> </tbody> The next line is Code:
<tbody id="collapseobj_forumhome_activeusers" style="$vbcollapse[collapseobj_forumhome_activeusers]"> Code:
collapseobj_forumhome_activeusers This line controls the collapsing of the box by identifying it, and setting the style of the box to match that of the image used earlier. (ie when collapsed the image shows a + and when expanded the image shows a - ) To have the box collapsed by default, you should use Code:
<tbody id="collapseobj_forumhome_activeusers" style="$vbcollapse[collapseobj_forumhome_activeusers]; display:none"> Finally, we have the content for the collapsable row, followed by the closure tag Code:
</tbody> Code:
</table> Part Two: Creating Standalone Collapsable Boxes Creating a standalone collapsable box (eg the one used for topXstats) is very straightforward. Literally, it involves following all the steps layed out in part one, using the same code and making adjustments as highlighted for the box name and setting the title and content to your requirements. Using the Code:
<thead> Part Three: Adding To Existing Tables You can add a collapsable section to any existing table. You simply use the steps laid out in part one, but omit the table and thead sections. You can place your collapsable section anywhere in a table, providing it is located in the center of the following code Code:
</tr> <tr> Code:
<tbody> You can also add collapsable sections right at the beginning of a table by adding the code immediately after the table tag, or at the end of the table by adding the code directly above the end table tag. An example of a modification that uses this technique is the Who Has Visited Today modification. Part Four: Multiple Items Collapsing With One Control Using the Whats Going On box as a primary example, what if you didn't want everything to be seperate, but rather all collapse apart from the statistics if you click a collapse icon? This is very easy to do, and you simply use the same name for each section that you wish to have collapsed by the one icon. In this case, that would be the WOL section, upcoming events and birthdays. Statistics would retain it's own name otherwise that two would collapse with the rest. I hope that you find this useful, and if you have any questions, please feel free to ask. |
#22
|
||||
|
||||
Quote:
i have 3 divs that I want opened and closed w/ one click. even though all 3 have the same name, only the first div is opening. here's my calendar event RSVP template Code:
<if condition="!$eventempty"> <hr> </if> <if condition="$rsvp_yes || $rsvp_maybe || $rsvp_no"><a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('group_rsvp')"><img id="collapseimg_group_rsvp" alt="Show/Hide Users" src="$stylevar[imgdir_button]/collapse_alt_collapsed.gif" alt="" border="0" /></a></if> <if condition="$rsvp_yes"> <b>$vbphrase[calendar_rsvpd] $vbphrase[yes]: $rsvp_yes_count </b> <if condition="$eventinfo[rsvp_max_guests]"> (<phrase 1="$rsvp_yes_members" 2="$rsvp_yes_guests">$vbphrase[x_members_and_y_guests]</phrase>) </if> <div id="collapseobj_group_rsvp" style="display: none;"><ul><if condition="$vboptions[rah_rsvp_showavatar]"><table>$rsvp_yes</table><else />$rsvp_yes</if></ul></div> </if> <if condition="$rsvp_maybe"> <b>$vbphrase[calendar_rsvpd] $vbphrase[maybe]: $rsvp_maybe_count</b> <if condition="$eventinfo[rsvp_max_guests]"> (<phrase 1="$rsvp_maybe_members" 2="$rsvp_maybe_guests">$vbphrase[x_members_and_y_guests]</phrase>) </if> <div id="collapseobj_group_rsvp" style="display: none;"><ul><if condition="$vboptions[rah_rsvp_showavatar]"><table>$rsvp_maybe</table><else />$rsvp_maybe</if></ul></div> </if> <if condition="$rsvp_no"> <b>$vbphrase[calendar_rsvpd] $vbphrase[no]: $rsvp_no_count</b> <div id="collapseobj_group_rsvp" style="display: none;"><ul><if condition="$vboptions[rah_rsvp_showavatar]"><table>$rsvp_no</table><else />$rsvp_no</if></ul></div> </if> if anyone knows what i'm doing wrong, I'd love the help. thanks |
#23
|
||||
|
||||
I really need help on this. anyone?
I have the divs setup individually with no problem. my issue is trying to have multiple divs oven with one click. i gave all the divs the same id but only the first one opens & closes the code is quoted above |
#24
|
||||
|
||||
I've created a left-column menu thingy (I know.... such technical terms... lol) with collapsable boxes, but they don't quite act like the collapsable boxes on the rest of the site. I mean, I got them to work, and I even used the display: none thing to make them collapsed upon page loads, but the rest of the boxes (What's going on box and forum category boxes) will remember when they have been collapsed. Sometimes I will collapse boxes and as I return to the forum home page, they will remain collapsed, but the side menu boxes don't remember. They will either be open or closed depending on whether I have added the display:none thing in the style variable, but not dependant on whether I have opened or closed them before. Is there a reason for this?
|
#25
|
|||
|
|||
Quote:
Code:
<tbody> <tr> <td class="tcat" colspan="<if condition="$vboptions[showmoderatorcolumn]">6<else />5</if>"> <if condition="$childforumbits"> <a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumbit_$forumid')"><img id="collapseimg_forumbit_$forumid" src="$stylevar[imgdir_button]/collapse_tcat{$collapseimg_forumid}.gif" alt="" border="0" /></a> </if> <a href="forumdisplay.php?$session[sessionurl]f=$forum[forumid]">$forum[title]</a> <if condition="$show['forumdescription']"><div class="smallfont">$forum[description]</div></if> <if condition="$show['subforums']"><div class="smallfont"><strong>$vbphrase[subforums]</strong>: $forum[subforums]</div></if> </td> </tr> </tbody> <if condition="$childforumbits"> <tbody id="collapseobj_forumbit_$forumid" style="{$collapseobj_forumid}"> $childforumbits </tbody> </if> Code:
if ($depth == 1 AND $tempext == '_nopost')
{
global $vbcollapse;
$collapseobj_forumid =& $vbcollapse["collapseobj_forumbit_$forumid"];
$collapseimg_forumid =& $vbcollapse["collapseimg_forumbit_$forumid"];
$show['collapsebutton'] = true;
}
|
#26
|
|||
|
|||
bump for ravyn's (#23) question
|
#27
|
|||
|
|||
Quote:
1 - Using unique variables and the tricks involved in naming them. 2 - Some places require you to reference the GLOBAL to get the collapsed state from the cookie. To do something like collapse a post. Button: Code:
<a href="#top" style="float:$stylevar[right]" onclick="return toggle_collapse('post_$post[postid]')"> <img id="collapseimg_post_$post[postid]" src="$stylevar[imgdir_button]/collapse_thead{$GLOBALS['vbcollapse']['collapseimg_post_'.$post[postid]]}.gif" alt="Collapse/Expand" border="0" /></a> Code:
<table width="100%" align="right" border="0" cellpadding="0" cellspacing="0"> <tbody id="collapseobj_post_$post[postid]" style="{$GLOBALS['vbcollapse']['collapseobj_post_'.$post['postid']]}"> Stuff to hide. </tbody> </table> |
#28
|
|||
|
|||
AlphaNation, thanks!
|
#29
|
|||
|
|||
lol thank you so much, i spent about 2 hours trying to figure out how to get collapsible boxes working right, and about 10 minutes after i am done i come here and see your tutorial anyways thanks, This will save people a lot of time.
|
#30
|
|||
|
|||
Thanks, I spent some time too, trying to get the boxes working.
|
#31
|
|||
|
|||
the default code is changed in 4.1.11
what to do? |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|