MyBB Community Forums

Full Version: Add a sliding jQuery sidebar to MyBB
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4
Wishing you could have a sliding jQuery sidebar for MyBB just like ion IPB3 or vB4? Well, now you can with this super simple template edit!

We're going to be editing the index template, but you're first going to need to upload these two image files to your /images/ folder for MyBB.

[Image: arrowright.png] [Image: arrowleft.png]

Now, open the Index template and replace the whole thing with the following (unless you have plugins installed which edit the index template - in which case you'll have to add their stuff to it afterwards or just make careful edits.

<html>
<head>
<title>{$mybb->settings['bbname']}</title>
{$headerinclude}
<script type="text/javascript">
<!--
	lang.no_new_posts = "{$lang->no_new_posts}";
	lang.click_mark_read = "{$lang->click_mark_read}";
// -->
</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script>
<style type="text/css">
.buttons {
	background: url(images/arrowleft.png) no-repeat;
	width: 16px;
	height: 16px;
	display: block;
	cursor: pointer;
}

.clickedbuttons {
	background: url(images/arrowright.png) no-repeat;
	width: 16px;
	height: 16px;
	display: block;
	cursor: pointer;
}
</style>
</head>
<body>
{$header}
<div style="float: right;">
<a id="button" class="buttons"></a>
</div>
<table>
<tr>
<td width="100%;" valign="top">
{$forums}
</td>
	<script type="text/javascript">
jQuery.noConflict();
	jQuery(function() {
		//run the currently selected effect
		function runEffect(){
			//get effect type from 
			var selectedEffect = 'slide';
			
			//most effect types need no options passed by default
			var options = {};
			//check if it's scale or size - they need options explicitly set
			if(selectedEffect == 'scale'){  options = {percent: 0}; }
			else if(selectedEffect == 'size'){ options = { to: {width: 200,height: 60} }; }
			
			//run the effect
			jQuery("#effect").toggle(selectedEffect,options,500);

		};
		
		//set effect from select menu value
		jQuery("#button").click(function() {
			jQuery(this).toggleClass("clickedbuttons")
			runEffect();
			return false;
		});

	});
	</script>
<td valign="top">
<div id="effect" class="ui-widget-content ui-corner-all">
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder" width="240">
<tr>
<td class="thead">
<strong>Search</strong>
</td>
</tr>
<tr>
<td class="trow1">
<form method="post" 
action="{$mybb->settings['bburl']}/search.php">

<input type="hidden" name="action" value="do_search" />

<input type="hidden" name="postthread" value="1" />

<input type="hidden" name="forums" value="all" />

<input type="hidden" name="showresults" value="threads" />

<input type="text" class="textbox" name="keywords" value="" />

<!-- start: gobutton -->

<input type="submit" class="button" value="Go" />

<!-- end: gobutton -->

</form>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>


{$boardstats}

<dl class="forum_legend smalltext">
	<dt><img src="{$theme['imgdir']}/on.gif" alt="{$lang->new_posts}" title="{$lang->new_posts}" style="vertical-align: middle; padding-bottom: 4px;" /></dt>
	<dd>{$lang->new_posts}</dd>

	<dt><img src="{$theme['imgdir']}/off.gif" alt="{$lang->no_new_posts}" title="{$lang->no_new_posts}" style="vertical-align: middle; padding-bottom: 4px;" /></dt>
	<dd>{$lang->no_new_posts}</dd>

	<dt><img src="{$theme['imgdir']}/offlock.gif" alt="{$lang->forum_locked}" title="{$lang->forum_locked}" style="vertical-align: middle;" /></dt>
	<dd>{$lang->forum_locked}</dd>
</dl>
<br style="clear: both" />
{$footer}
</body>
</html>


Simple eh? You now have a sliding sidebar which is toggled with a small graphic button. There are no conflicts with prototype or anything, so enjoy!

Here's a quick screenshot of the closed sidebar next to the open one. Lovely eh? You can always add more to it too Smile

[Image: sidebar.png]
Holy crap, that's amazing!! I just tried it, and it works great. Thanks!
Is it possible to get a live preview of this =)?
(2010-07-07, 12:04 PM)faviouz Wrote: [ -> ]Holy crap, that's amazing!! I just tried it, and it works great. Thanks!

;D Glad you like it xD

(2010-07-07, 12:21 PM)ink Wrote: [ -> ]Is it possible to get a live preview of this =)?

Yup, check my site here: http://www.mypurebb.com/index.php
That's actually pretty tight! I'll add it later :-)

Thanks!
No problem at all.
Can we use the boxes from the portal page? That would be great.
Hey is it possible to do that to the bar where the User CP is to make the forum bigger like a hide option? If yes then how?
(2010-07-07, 12:32 PM)faviouz Wrote: [ -> ]Can we use the boxes from the portal page? That would be great.

Yeah, you could do it with an iframe (the easiest option haha) or via a plugin. To do it using an iframe, use code similar to this (it's not perfect and it looks terrible...):

<iframe src="portal.php#sidebar" border="0" frameborder="0" name="sidebar" scrolling="no" width="200" height="1000"></iframe>

You'd also have to edit the portal template with the below code instead;

<html>
<head>
<title>{$mybb->settings['bbname']}</title>
{$headerinclude}
</head>
<body>
{$header}
<table width="100%" cellspacing="0" cellpadding="{$theme['tablespace']}" border="0" align="center">
<tr><td valign="top" width="200" id="sidebar">
{$welcome}
{$pms}
{$search}
{$stats}
{$whosonline}
{$latestthreads}
</td>
<td>&nbsp;</td>
<td valign="top">
{$announcements}
</td>
</tr>
</table>
{$footer}
</body>
</html>



As I said, it's not a perfect solution, but till I get round to sorting something out properly (via a plugin probably), it's have to do. You could always put Labrocca's Sideboxes in it too :3


(2010-07-07, 02:02 PM)AXVIS Wrote: [ -> ]Hey is it possible to do that to the bar where the User CP is to make the forum bigger like a hide option? If yes then how?

You mean the panel? Yeah, you could quite easily. You could just use the code here and adapt it so it's similar to;

<div id="effect" class="ui-widget-content ui-corner-all">
<div class="panel">
....
</div>
</div>

You would, of course have to include the JS stuff and you couldn't use both a sliding panel and a sliding sidebar with the same IDs ;P
hmm, so I could install a sidebox plugin, and insert the variable, and still get this fancy thing? Looks like the easiest solution to me.

Thanks. Big Grin
Pages: 1 2 3 4