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

Reply
 
Thread Tools
[HOW TO - vB4] Create a New Tab in the navbar
Lynne's Avatar
Lynne
Join Date: Sep 2004
Posts: 41,180

 

California/Idaho
Show Printable Version Email this Page Subscription
Lynne Lynne is offline 10-26-2009, 10:00 PM

Here's a pretty simple method for creating a new tab in the navbar, along with a submenu to go along with it. All you need is a unique condition for when your tab will be shown. What you will be making is a plugin to create the Nav Link along with a submenu which Link 1, Link 2, Link 3, and Drop Down which then drops down and has SubLink 1, SubLink 2, and SubLink 3. This is shown below.

NOTE: This is for 4.0.x and 4.1.x. In 4.2.x, you should be using the Navigation Manager.




This article is NOT to be used just to add another link to a submenu. It is for creating the Nav Link tab along with all the submenus. Again, if all you want is to add submenus to an existing tab, then this article is NOT for you!!!

This article is also for use by users who understand the basics of conditions and can write them. The navbar is not really an easy thing to play with if you don't know what you are doing - I think even Wayne said it had issues - so don't try this if you don't understand how to write a condition.

OK, with that out of the way....

Here's the basic template for making your new tab:

Create a plugin (Plugins & Products) > Add New Plugin:
hook location - process_templates_complete *
Title - New Tab for Navbar
Execution Order - 5
(* I used to have this listed as global_state_check but then noticed vb themselves use the process_templates_complete hook location, so I changed it.)

PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'yourpage')
{
    
$vbulletin->options['selectednavtab']='unique_name';
    
$tabselected ' class="selected"';
    
$tablinks '                <ul class="floatcontainer">
                        <li><a href="link1.php">Link 1</a></li>
                            <li class="popupmenu">
                                <a href="javascript://" class="popupctrl">Drop Down</a>
                                <ul class="popupbody popuphover">
                                        <li><a href="sublink1.php">SubLink 1</a></li>
                                        <li><a href="sublink2.php">SubLink 2</a></li>
                                        <li><a href="sublink3.php">SubLink 3</a></li>
                                </ul>
                            </li>
                        <li><a href="link2.php">Link 2</a></li>
                        <li><a href="link3.php">Link 3</a></li>
                </ul> '
;


$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="link.php">Nav Link</a>'.$tablinks.'</li>' 
Things to take note of:

PHP Code:
if (THIS_SCRIPT == 'yourpage'
Your condition MUST be unique! If you use a condition that is also going to evaluate to true for another tab, then they will both be highlighted and the wrong submenu may show up underneath.

PHP Code:
$vbulletin->options['selectednavtab']='unique_name'
The 'seletednavtab' must also be a unique name. Again, if you have two tabs with the same 'selectednavtab' name, then both tabs will be highlighted.

PHP Code:
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="link.php">Nav Link</a>'.$tablinks.'</li>' 
You may use a different template_hook here - it just depends on where you want your tab to be - navtab_start and navtab_middle are also available.


ragtek also posted an article to do the same thing only using a template with the plugin - [HOW TO - vB4] Create a New Tab in the navbar (with template)



Originally posted on vb.org 2009-10-27.

Other related articles of possible interest:
[HOW TO - vB4] Remove the vB Default Navtabs
[HOW TO - vB4] Create your own vBulletin page
Attached Images
File Type: png vb4_nav_links.png (21.8 KB, 0 views)
Reply With Quote
  #472  
Old 11-03-2011, 04:45 AM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Breakthecycle2 View Post
So, the actual tab needs to link somewhere first? Even if I just want the tab with a submenu with links?
Yes. There is another article on making the navtab an actual dropdown. Perhaps that would be better for you. (it's an article in this same forum, I'm sure you can find it.)
Reply With Quote
  #473  
Old 11-05-2011, 06:58 PM
smimosmile smimosmile is offline
 
Join Date: Jul 2009
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you Lynne, it really helped me, i created an "ibproarcade" tab using (THIS_SCRIPT == 'arcade') as it's mensioned in arcade.php file, and i created 2 other tabs with no "if" for non VB pages
Reply With Quote
  #474  
Old 11-06-2011, 12:30 PM
Empire Gaming Empire Gaming is offline
 
Join Date: Dec 2009
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by AlokSharma View Post
Just in case, if someone only wants to add a tab, here is the modified code:

PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'chat')
{
    
$vbulletin->options['selectednavtab']='chat';
    
$tabselected ' class="selected"';

$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="chat.php">Chat</a>'.$tablinks.'</li>' 
Replace:
PHP Code:
if (THIS_SCRIPT == 'chat'
and
PHP Code:
$vbulletin->options['selectednavtab']='chat'
With some unique name.
Here is what I have:

PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'home')
{
    
$vbulletin->options['selectednavtab']='home';
    
$tabselected ' class="selected"';

$template_hook['navtab_start'] .= '<li'.$tabselected.'><a class="navtab" href="http://www.egcglobal.com">Home</a>'.$tablinks.'</li>' 
The tab itself shows up on all my pages, even my vBa main page, but I still cannot for the life of me figure out how to have the "Home" button be highlighted when it is selected.



If I click on it, it takes me to my main vBa portal page (www.egcglobal.com) but it is the "Forum" button that stays highlighted.

Anyone have any ideas on how to fix this?


[SOLUTION BELOW]

Ok, so for anyone else who may be having the same issue as I was, if you are running vBa and want a "home" button, your plugin should look like below. Just remember to change the URL to your main page.

PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'adv_index')
{
    
$vbulletin->options['selectednavtab']='Home';
    
$tabselected ' class="selected"';


$template_hook['navtab_start'] .= '<li'.$tabselected.'><a class="navtab" href="http://www.egcglobal.com">Home</a>'.$tablinks.'</li>' 


Thanks again to both Hippy & PankajKumar for helping me out and to Lynn for starting me on this quest : )
Reply With Quote
  #475  
Old 11-06-2011, 12:48 PM
Hippy's Avatar
Hippy Hippy is offline
 
Join Date: Dec 2001
Location: USA, New Jersey
Posts: 2,392
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

loook in the file and search for THIS_SCRIPT
and see what it says then add it to the admincp option where you added the new tab

if it's vbadvanced it should look like this
THIS_SCRIPT == 'adv_index'

define('THIS_SCRIPT', 'adv_index');
Reply With Quote
  #476  
Old 11-06-2011, 01:06 PM
Empire Gaming Empire Gaming is offline
 
Join Date: Dec 2009
Posts: 13
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by PankajKumar View Post
Thanks Lynne,

I did that and it worked smooth. And I figured it out why it was happening. Just in case someone else is facing this problem, its defined in the vbadvanced php file, similar things can happen if used with other php files. Just a Tip.

Thanks again.
You Rock. Thanks. This fixed my problem with the "Forum" button staying highlighted.

--------------- Added [DATE]1320588568[/DATE] at [TIME]1320588568[/TIME] ---------------

Quote:
Originally Posted by Hippy View Post
loook in the file and search for THIS_SCRIPT
and see what it says then add it to the admincp option where you added the new tab


if it's vbadvanced it should look like this
THIS_SCRIPT == 'adv_index'

define('THIS_SCRIPT', 'adv_index');
Thanks. I just did that before I saw your suggestion
Reply With Quote
  #477  
Old 11-06-2011, 06:41 PM
rootsxrocks rootsxrocks is offline
 
Join Date: Aug 2009
Posts: 230
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How would I go about doing this for the Calender and the Groups in vb4.1.7 and will there be any problems going to 4.1.8 . I am not sure what sub menues I would need I just want it to be out front and not hidden.
Reply With Quote
  #478  
Old 11-06-2011, 09:01 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by rootsxrocks View Post
How would I go about doing this for the Calender and the Groups in vb4.1.7 and will there be any problems going to 4.1.8 . I am not sure what sub menues I would need I just want it to be out front and not hidden.
Just something like:
PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'calendar')
{
    
$vbulletin->options['selectednavtab']='calendar';
    
$tabselected ' class="selected"';


$template_hook['navtab_start'] .= '<li'.$tabselected.'><a class="navtab" href="calendar.php">Calendar</a></li>' 
and do similar for any other tab you want.
Reply With Quote
  #479  
Old 11-07-2011, 04:24 PM
rootsxrocks rootsxrocks is offline
 
Join Date: Aug 2009
Posts: 230
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you Lynne I will give it a try
Reply With Quote
  #480  
Old 11-19-2011, 11:52 AM
rokslide rokslide is offline
 
Join Date: Nov 2011
Posts: 16
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Please help. This worked very well and I got the new tab set up but for some reason it will only let me have six links. When I add the seventh link the page goes haywire! Any ideas?

Thanks
Reply With Quote
  #481  
Old 11-19-2011, 03:01 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sure, don't have more than six tabs! There is just not that much room to have a ton of tabs there. Consider a dropdown tab instead (different article).
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 06:28 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05346 seconds
  • Memory Usage 2,378KB
  • Queries Executed 26 (?)
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
  • (10)bbcode_php
  • (5)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
  • (4)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (10)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (1)postbit_attachment
  • (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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete