PDA

View Full Version : Change Style dropdown on ALL of your vB pages :) (dynamic, +1 query)


KuraFire
06 Feb 2003, 13:29
HACK: Change Style dropdown on ALL of your vB pages :) (dynamic, +1 query)
BY: KuraFire [www.kurafire.com]
DESCRIPTION: Allows users/guests to change the style on ANY given vB page of yours
DIFFICULTY: Fairly Easy
INSTALL-TIME: 5-10 minutes
STEPS: 8

Demo: www.kurafire.com/thecouch/
Just browse around and try changing the style on various pages :)

EXTENDED DESCRIPTION:
This hack will put a small drop-down box in your Header template, containing all the styles of your vBulletin forum. This particular version of the hack will do one query to gather all your styles (and the amount of users using each style). There is also a version I released which relies on hardcoding the styles into your global.php so that you don't have one additional query on every pageload, which is the case with this hack.

PROS FOR THIS VERSION:
- the amount of users using each style;
- if you add more styles, it's automatically updated
CONS FOR THIS VERSION:
- one query extra for every page load of your vB
- drop down box is fairly wide (due to count-users addition)


Install instructions are in the attachment. Enjoy / good luck :)

Dean C
06 Feb 2003, 16:41
Nice hack again Kura :)

- miSt

leviw
06 Feb 2003, 18:06
I guess I dont understand the difference of this drop down compared to others.

Is it that the drop down box is formatted into the header, and thus automatically on all pages including vbhome(lite)?

I also noticed on your page the user count for each style has been deactivated, is this an easy change and what can we do to also deactivate our user count and thus save a query on each page?

Just curious, trying to learn as much about vbulletin as possible and I want to be able to admire all the subtle differences. :p

esfron
06 Feb 2003, 20:35
KuraFire, thanks for this hack.

So far it's alright, everything is working on all vb pages: users and guests can change the style automatically on all pages but the option "User CP/ Edit Options/ Style Set" is not working anymore. It may be a big issue to register as a member: the selected style is not set after the login. The new member have to reset his style in the dropdownbox.

Disturbed
10 Feb 2003, 10:00
installed, thanks :)

Prince3
11 Feb 2003, 16:02
already made a hack like this myself for my own board :) still nice to see someone else made it aswell :) nice hack :p

Travis641
16 Feb 2003, 06:58
Once again, if a user hasnt selected a style, it wont show up in the dropdown - that would be nice to be fixed. :\

Travis641
16 Feb 2003, 20:08
*bump*

Travis641
17 Feb 2003, 17:14
*bump* again

leviw
17 Feb 2003, 18:54
The only fix I've seen for this is to create 1 dummy user for each style.

After the forum has enough users you can go back and delete the extras, but in the meantime thats the quick and easy fix.

Wish I knew enough php to actually solve the problem, but there ya are. :paranoid:

Oxygen
19 Feb 2003, 01:51
So I love this hack, even with the bug in UserCP and User Styles. having to have one member or they do not show (there even may be a fix)

I wanted it to function on my vhHome...
Here is what I did:

in vhHomes global.php (BACK IT UP!!!!!!)

Find :

// +--------------------------------------------------------------
// | Include sessions
// +--------------------------------------------------------------
include_once( './' . $adminpath . '/sessions.php' );


Above Place:

//Style Addition
if (isset($changestyle)) {
$styleid = intval($changestyle);
}
//Style Addition


Below Place:


//Style Addition
if (isset($changestyle)) {
if ($styleid!=0 && is_numeric($styleid))
$DB_site->query("UPDATE user SET styleid=$styleid WHERE userid=$bbuserinfo[userid]");
}
//Style Addition



Find:

$templatesused.= 'phpinclude,home_headinclude,home_header,home_footer,home_usernameloggedin,home_ usernameloggedout,home_error';

Replace with:

//Style Addition
$templatesused.='header_stylebox,header_styleboxbit,phpinclude,home_headinclude, home_header,home_footer,home_usernameloggedin,home_usernameloggedout,home_error' ;
//Style Addition


Find:

$homeheadinclude = '';
$homeheader = '';
$homefooter = '';
$search = '';
$links = '';


Above Place:

//Style Addition
$boxurl = $PHP_SELF . "?" . $_SERVER['QUERY_STRING'];
$boxurl = str_replace("s=$session[sessionhash]", "", $boxurl);
$boxurl = preg_replace("/(&changestyle=(.{0,2}))/", "", $boxurl);
$boxurl = str_replace("?&", "?", $boxurl);
if(substr($boxurl, -1)!="&"){
$boxurl .= "&";
}
$dropdownbits = "";

$allstyles = $DB_site->query("SELECT style.title, user.styleid, COUNT(*) AS count FROM user LEFT JOIN style USING (styleid) WHERE style.styleid IS NOT NULL AND style.userselect=1 GROUP BY user.styleid");
// this query was thanks to FireFly's hack :) (credit where credit is due)

while ($thisstyle = $DB_site->fetch_array($allstyles)){
$stylesel = ($styleid==$thisstyle[styleid]) ? "selected=\"selected\"" : "";
eval("\$dropdownbits .= \"".gettemplate('header_styleboxbit')."\";");
}
eval("\$dropdownbox = \"".gettemplate('header_stylebox')."\";");
//Style Addition


Upload and enjoy!

Oxygen
19 Feb 2003, 02:06
Place :
$dropdownbox
anywhere in your Home_* templates

gengar003
23 Mar 2003, 14:24
hmm.. I installed it, but the dropdownbox is blank, with no styles on it at all....