Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Add options per forum
Logikos
Join Date: Jan 2003
Posts: 2,924

 

Show Printable Version Email this Page Subscription
Logikos Logikos is offline 08-01-2005, 10:00 PM

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]
ALTER TABLE forum ADD (
var smallint(3) unsigned not null default ''
)
[/sql]

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 vB Category Icons hack. This row is named 'forumhomeicon'

Now that we have added our new row named 'var'. We now have to add the on/off option in the forums manager area of the admin control panel.

Add the option in the ACP
To add this new option in the ACP we need to create a new hook and add some code to that hook.

The hook name should be: forumadmin_edit_form
And the code should be:
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.
Reply With Quote
  #32  
Old 11-18-2005, 04:26 PM
badnans badnans is offline
 
Join Date: Nov 2005
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MarcoH64
but since you didn't answer what you want to achieve
Its a very simple thing I wanted and I thought the question was straightforward. I did answer your query when I asked "If a registered user has to create a Forum Topic"

Here are the details:

I was trying to figure out how I can allow a registered user to add a new "Forum Topic" in my implementation of vBulletin.

What I saw was one can add Forums through the Admin Control Panel and mark them either as Categories or Forums.

My requirement was, under special situations, I would like registered users to add a Forum Topic, and the admin will then approve the forum to be active.

After some study of the documentation and admin code, i was able to figure out how to achieve that using "Datamanager". The code I have posted earlier does what I wanted.

Is this the correct approach? This is similar to adding a User using "Datamanager" as given in one of the examples. I was worried when you mentioned
Quote:
Originally Posted by MarcoH64
This sounds like it is getting very close to the borders of the license agreement.
Reply With Quote
  #33  
Old 11-18-2005, 04:30 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

As long as it will not allow members to create their own forums and make them look/access them like a standalone board, you will not be breaking the license agreement. Otherwise yes.
Reply With Quote
  #34  
Old 11-18-2005, 04:43 PM
badnans badnans is offline
 
Join Date: Nov 2005
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks your reply...

Do you mean "standalone forum" as in a separate implementation of vBulletin software?... that isn't the intention.

These will be part of one single implementation and each of the forum topics will have to be approved by the Admin. The Admin might choose to appoint the user who created the forum as its Moderator.

I hope thats in line with the agreement.
Reply With Quote
  #35  
Old 12-05-2005, 02:45 PM
Frozen Dreams's Avatar
Frozen Dreams Frozen Dreams is offline
 
Join Date: Apr 2003
Location: Germany
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Just wanted to say thanks, Live Wire. Your tut was just what I needed and really helped cutting down on time I probably would have needed without it. Very helpful indeed!
Reply With Quote
  #36  
Old 02-07-2006, 01:27 AM
joefitz joefitz is offline
 
Join Date: May 2005
Location: Boston, MA
Posts: 17
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

FYI, if anyone is interested in a hack that makes it easy to add custom forum permissions (which match up with a set of custom usergroup permissions), check out my hack at:Custom Usergroup Forum Permissions

Livewire, this thread was very useful to me. I'm hoping to incorporate custom forum options into my hack as well, which will provide the ultimate in permissioning...

custom forum permissions-> custom usergroup permissions -> custom forum permissions.
Reply With Quote
  #37  
Old 02-07-2006, 02:23 AM
Logikos Logikos is offline
 
Join Date: Jan 2003
Posts: 2,924
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Glad you found this turorial useful
Reply With Quote
  #38  
Old 03-01-2006, 07:55 AM
zagman76 zagman76 is offline
 
Join Date: Sep 2005
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I am having some trouble with this.

I have done everything to-the-letter, but the custom option (which is the [you] hack) is still being allowed across the board. Is this a function of the [you] hack, or is there something I am missing in these instructions?

I seem to only be able to turn the [you] hack on/off by changing the php code here (from 1 to 0) (this is how I have the [you] hack configured on my site after following the instructions)
PHP Code:
if ($foruminfo['perforumhack'] == 1)
{
     
// your code here

$this->post['message'] = str_replace('[you]'$this->registry->userinfo['username'], $this->post['message']);


the adminCP forum option always defaults to "No" as well - even when I save and re-enter the forum manager.

here is what I used in the forumadmin_edit_forum hook:
PHP Code:
print_yes_no_row($vbphrase['Allow_Hack'], 'vb3_forum[perforumhack]'$vb3_forum['perforumhack']); 
thanks!!
Reply With Quote
  #39  
Old 03-10-2006, 05:31 AM
zagman76 zagman76 is offline
 
Join Date: Sep 2005
Posts: 79
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

-bump-


....any help?
Reply With Quote
  #40  
Old 03-10-2006, 08:25 AM
Logikos Logikos is offline
 
Join Date: Jan 2003
Posts: 2,924
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This:
PHP Code:
print_yes_no_row($vbphrase['Allow_Hack'], 'vb3_forum[perforumhack]'$vb3_forum['perforumhack']); 
Should Be:
PHP Code:
print_yes_no_row($vbphrase['Allow_Hack'], 'forum[perforumhack]'$forum['perforumhack']); 
Reply With Quote
  #41  
Old 03-10-2006, 08:58 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Why you want to use a input_row for a yes/no value?
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:01 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05391 seconds
  • Memory Usage 2,332KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)bbcode_html
  • (12)bbcode_php
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete