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
  #182  
Old 02-19-2010, 06:25 AM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by samiro View Post
hii - i donnt want to make what you do in this articles
If you start a post in an article thread with this sentence, you can be sure that you are off topic. Because article threads are for what is discussed in the article. If you want to do something else, you need to open your own thread.
Reply With Quote
  #183  
Old 02-19-2010, 04:03 PM
Bacon Butty Bacon Butty is offline
 
Join Date: Jun 2005
Posts: 309
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks very much for this (and your create own page tutorial) Lynne, your work is massively appreciated.

Can I be a pain and ask your advice? I am attempting to include two tabs on my test forum. One works fine, not a problem but the second tab doesn't remain highlighted once clicked. I've read through the thread and fiddled with it for over an hour, any possible chance you could have a look at my code and identify the problem?

Working Tab;

Code:
$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'newsfeed')
{
    $vbulletin->options['selectednavtab']='newsfeed';
    $tabselected = ' class="selected"';
    $tablinks = '                <ul class="floatcontainer">
                        <li><a href="/testvb/newsfeed.php">Latest EFC News Feed</a></li>
                            <li class="popupmenu">
                                <a href="javascript://" class="popupctrl">Events</a>
                                <ul class="popupbody popuphover">
                                        <li><a href="sublink1.php">Diary of Events</a></li>
                                        <li><a href="sublink2.php">Forthcoming Everton Events</a></li>
                                        <li><a href="sublink3.php">Official Facebook Events Group</a></li>
                                </ul>
                            </li>
                        <li><a href="link2.php">Supporter Clubs</a></li>
                        <li><a href="link3.php">Visitors Guide</a></li>
                </ul> ';

} 
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="http://www.grandoldteam.com/testvb/newsfeed.php">News Feed</a>'.$tablinks.'</li>' ;
Tab that isn't working (and by not working, I mean not highlighted once clicked);

Code:
$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'thesite')
{
    $vbulletin->options['selectednavtab']='thesite';
    $tabselected = ' class="selected"';
    $tablinks = '                <ul class="floatcontainer">
                        <li><a href="/testvb/information.php">Link1</a></li>
                            <li class="popupmenu">
                                <a href="javascript://" class="popupctrl">Events</a>
                                <ul class="popupbody popuphover">
                                        <li><a href="sublink1.php">Diary of Events</a></li>
                                        <li><a href="sublink2.php">Forthcoming Everton Events</a></li>
                                        <li><a href="sublink3.php">Official Facebook Events Group</a></li>
                                </ul>
                            </li>
                        <li><a href="link2.php">Supporter Clubs</a></li>
                        <li><a href="link3.php">Visitors Guide</a></li>
                </ul> ';

} 
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="http://www.grandoldteam.com/testvb/newsfeed.php">The Site</a>'.$tablinks.'</li>'
;

Reply With Quote
  #184  
Old 02-19-2010, 07:28 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 Bacon Butty View Post
Thanks very much for this (and your create own page tutorial) Lynne, your work is massively appreciated.

Can I be a pain and ask your advice? I am attempting to include two tabs on my test forum. One works fine, not a problem but the second tab doesn't remain highlighted once clicked. I've read through the thread and fiddled with it for over an hour, any possible chance you could have a look at my code and identify the problem?

You have both tabs going to the newsfeed.php page. How is it supposed to know which tab to highlight when the link is the same? It doesn't know which tab you are clicking on to get there. It decides which to highlight based on your condition which is based on THIS_SCRIPT.
Reply With Quote
  #185  
Old 02-19-2010, 08:27 PM
Bacon Butty Bacon Butty is offline
 
Join Date: Jun 2005
Posts: 309
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks but still having the same problem Lynne after changing the bottom link to a unique page.
Reply With Quote
  #186  
Old 02-19-2010, 09:19 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 Bacon Butty View Post
Thanks but still having the same problem Lynne after changing the bottom link to a unique page.
Well, this is you condition in the second plugin:
PHP Code:
if (THIS_SCRIPT == 'thesite'
Did you define THIS_SCRIPT in your page? If you didn't define it there, then it will default to the Forum link.
Reply With Quote
  #187  
Old 02-21-2010, 10:20 AM
Bacon Butty Bacon Butty is offline
 
Join Date: Jun 2005
Posts: 309
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
Well, this is you condition in the second plugin:
PHP Code:
if (THIS_SCRIPT == 'thesite'
Did you define THIS_SCRIPT in your page? If you didn't define it there, then it will default to the Forum link.
Doh! Of course I didn't, because that would have been too easy.

Thanks Lynne. All sorted now!
Reply With Quote
  #188  
Old 02-26-2010, 05:49 AM
esmforum esmforum is offline
 
Join Date: Feb 2010
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I just tried adding a new tab in navtab. I have suceeded adding a tab.
But I still have questions to get it working fully. So please help me out.

I added a new tab called 'product' in navtab.
Q1) Do I have to create a page for product as a php file?
Q2) if so where do I upload the php file? which folder?
Q3) After making the file and link it with the 'product'tab, would submenus show up? Currently 'product' tab is linked to index.php for testing purpose. Therefore it highlights 'home' tab and shows home's submenues.
Reply With Quote
  #189  
Old 02-26-2010, 01:34 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 esmforum View Post
I just tried adding a new tab in navtab. I have suceeded adding a tab.
But I still have questions to get it working fully. So please help me out.

I added a new tab called 'product' in navtab.
Q1) Do I have to create a page for product as a php file?
Q2) if so where do I upload the php file? which folder?
Q3) After making the file and link it with the 'product'tab, would submenus show up? Currently 'product' tab is linked to index.php for testing purpose. Therefore it highlights 'home' tab and shows home's submenues.
1) No, but the page should exist or why link to it?
2) Wherever you said it was supposed to link to in your tab (same folder as other vbulletin files?)
3) Only if you write the condition correct about when to show the submenus and make the tab 'selected'. In my example, the condition is based about THIS_SCRIPT, so if you define THIS_SCRIPT in the products.php page, then use it in your condition like in the example.
Reply With Quote
  #190  
Old 03-01-2010, 12:22 AM
shooptek shooptek is offline
 
Join Date: Feb 2009
Posts: 39
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hey Lynne,
First off let me say that this guide has been incredibly helpful for me. I love being able to customize the tabs, and your instructions were easy enough to follow.

I have a good amount of experience with VB, but I have hit a snag. I did some reading in this thread, some searching of this thread (as well as google) and still have not been able to find a solution to my problem.

I am using VB 4.0.2 Suite with the CMS as the homepage. I have a number of different "Sections" set up in my CMS, and I would like each section to have its own button on the NavBar Tabs. This causes me problems because when I set it up so that a section (lets call it "Events") has its own button, even though I have set a custom THIS_SCRIPT setting for the plugin, the home button is still "selected" on the navbar. I believe this is because the "Events" page still is generated from the content.php file, and this is causing the problem with the THIS_SCRIPT setting, as they would be the same. Is my thinking correct?

If so, is there anything I can do to work around this?

Thanks in advance!
Reply With Quote
  #191  
Old 03-01-2010, 02:55 AM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The conditions for showing the HOME tab to be 'selected' are in the plugin for the Home tab - Navbar: Insert CMS Navbar Entry. You would have to rewrite that condition so the tab is not selected when you want one of your other tabs to be selected.
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 03:01 AM.


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.05328 seconds
  • Memory Usage 2,376KB
  • 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
  • (2)bbcode_code
  • (6)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
  • (2)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