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

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
INSTALL-TIME: 5-10 minutes

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

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.

- the amount of users using each style;
- if you add more styles, it's automatically updated
- 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

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

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.

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

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

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. :\

16 Feb 2003, 20:08

17 Feb 2003, 17:14
*bump* again

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:

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


$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


$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!

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

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