Back to vBulletin 3 Articles

Add options per forum
by Logikos 02 Aug 2005

What this is
This guide will teach you to use the hooks system to add options to your admincp/forum.php page. One finished, you will be able to add new options to your forum with just a few lines of code.

Don't understand?
Ever wanted to turn something on, but only in one of your forums? For example, lets say you want to execute code, but only in forum I.D. 2, 16, and 45.

Lets begin!
In this tutorial we will assume that you want a yes or no option; in order to enable/disable some code. In order to do that we first need to create a new row in the database. This will hold the information of which forums will be enabled/disabled. Always remember that '1' is considered as on, or enabled. And that '0' is considered off, or disabled.

Please make sure this is all done on a test forum!

We have to store the data!
Run this SQL Query:
SQL Query: (https://www.vbulletin.com/docs/html/maintenance_query" target="new">how to run queries)
ALTER TABLE forum ADD (
        var smallint(3) unsigned not null default ''
)

Var = The name of the row in the database. This should be a name that will describe your system in one word. For example. In my
PHP Code:
print_input_row($vbphrase['your_phrase'], 'forum[var]'$forum['var']); 
Notice the 'var'? Remember, that's the row name!
That will actually add the yes/no row to all your forums in the admincp. So when you click on the save button, it will add your selection to the database.

But how does it know which row to add it to? Glad you asked.

You have to create one more hook!
The hook name should be: forumdata_start
And the code to add there is the following
PHP Code:
$this->validfields['var'] = array(TYPE_STRREQ_NO); 
Notice the var again? That's telling it which row to add it to.

I want to add more then just one option!
Then you will need to repeat this tutorial for each option you would like to have.

Now that you have saved both hooks. You can now use the following code in any of your hooks.

PHP Code:
if ($foruminfo['var'] == 1)
{
     
// your code here

In templates you would use

HTML Code:
<if condition="$foruminfo['var'] == 1">
     <!-- Your Code Here -->
</if>
Big Tip:
If you have 2 or more options being added to the forums, you can place all the code in each hook. For example:

Hookname: forumadmin_edit_form
Code:
PHP Code:
print_input_row($vbphrase['your_phrase'], 'forum[var1]'$forum['var1']);
print_input_row($vbphrase['your_phrase'], 'forum[var2]'$forum['var2']); 
Hook Name: forumdata_start
Code:
PHP Code:
$this->validfields['var1'] = array(TYPE_STRREQ_NO);
$this->validfields['var2'] = array(TYPE_STRREQ_NO); 
You don't have to keep creating new hooks for more options for the same hack. Is better to only create hooks for separate hacks.

Custom Fields
The following fields can also be used.
PHP Code:
// This will print an input form. Good for titles, and such.
print_input_row($vbphrase['your_phrase'], 'forum[var]'$forum['var']); 
PHP Code:
//This will print a yes or no row
print_yes_no_row($vbphrase['your_phrase'], 'forum[var]'$forum['var']); 
PHP Code:
//This will print a text area. Good for descriptions
print_textarea_row($vbphrase['your_phrase'], 'forum[var]'$forum['var']); 
There are more that can be used. When I have some more time I will add them all here.

This tutorial was created for a member who needed to know how to do this exact thing, so I figured I would teach everyone.

vblts.ru supports vBulletin®, 2022-2024