PDA

View Full Version : Variable's For Beginners


melefire
20 Jun 2006, 11:48
I hope that no one already wrote this.
Copyright 2006 MeleFire, You may not move this article from vBulletin.org

Description:
When writing hacks you may somtimes use the 'vBulletin Options' system, this system allows you to easily add your own options page for your hack. It also gives you variables that look like:
$vbulletin->options[optionname] Those variables are good for conditional statments but if in the admincp your option requires the admin to enter text(not just yes or no) and then you attempt to put that variable inside a template so the text the admin entered will come up you will get the words:
Array[optionname] So basically that dosn't work at all.

How to Fix the Problem:
Fixing the problem is not very hard. But you will need to have complete accses to the PHP page that calls the template. If you do not have a PHP page or a template visit this article (http://www.vbulletin.org/forum/showthread.php?t=98009), it tells how to make a custom vBulletin PHP/Template page.

Now you must open up your PHP page and find this code:*
$navbits[$parent] =
Add under:
$myvariable = $vbulletin->options[youroptionname] Remember to replace myvariable with whatever you want your variable to be called and to replace youroptionname with what ever your option is called.
*If you did not find the first code you may just place the second code any where after the 'START MAIN SCRIPT'.

FAQ:
Q: Where is my option name?

A: On your options page for your hack(in DEBUG (http://www.vbulletin.org/forum/showthread.php?t=82835) mode) click edit find varname: This is your option name.
http://img210.imageshack.us/img210/5094/youroptionname5rl.th.jpg (http://img210.imageshack.us/my.php?image=youroptionname5rl.jpg)

Q: What version of vBulletin will this work for?

A: 3.5.0 - 3.6 Beta 2, but only 3.5.4 and 3.6 Beta 2 have been heavily tested.

----------
I hope this helped, please give me feedback!:classic:

Zachery
20 Jun 2006, 12:15
Well, in the tempates you need to use $vboptions[foo] instead of $vbulletin->options[foo]. If you want to use $vbulletin->options[foo] in templates you need to use {$vbulletin-options['foo']} and all is well. The former ($vboptions[foo]) would be prefered in the templates for easy reading as well as figuring out where they come from.

melefire
20 Jun 2006, 12:19
opps oh well, this way works too though

Zachery
20 Jun 2006, 12:28
I wanted to confirm some things before I posted more, so from marco and alan-cit from irc.

You should really refrence varibles instead of copying them.

$myvarible =& $vbulletin->options['foo'];

Since we just want to reassign it an easier to remember name, and since this I assume would be used just for an easier to read option, it will save on memory. If we needed to change $myvarible for some reason, like +1 we would change the original as well, in which case we would want to copy it