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
  #292  
Old 06-06-2010, 08:35 AM
AliceHoward AliceHoward is offline
 
Join Date: Mar 2010
Location: Oxford, England
Posts: 188
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Lynne,

I am wondering if there is anyway for me to use this great tutorial.

I want to be able to use this even though I do not have a custom page, I have my forumhome split to keep style download forums out of my main forums. I have do this using a really old mod by amykhar.

My forums for style downloads are located on forum.php?page=2, there isn't a this script defined anywhere so I cannot use one to get the tab higlighted or the pop-up menus to appear.

This is how I have my plugin written:
Code:
$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'forum.php?page=2')
{
    $vbulletin->options['selectednavtab']='style_forums';
    $tabselected = ' class="selected"';
    $tablinks = ' <ul class="floatcontainer">
                        <li class="popupmenu">
                            <a href="javascript://" class="popupctrl">The vB3 Styles</a>
                            <ul class="popupbody popuphover">
                                    <li><a href="forumdisplay.php?11-Download-vB3-Lighter-Styles">Download vB3 Lighter Styles</a></li>
                                    <li><a href="forumdisplay.php?16-Download-vB3-Dark-Styles">Download vB3 Dark Styles</a></li>
                                    <li><a href="project.php?projectid=2">Project vB Styles Version 3.8x</a></li>
                            </ul>
                        </li>
                        <li class="popupmenu">
                            <a href="javascript://" class="popupctrl">The vB4 Styles</a>
                            <ul class="popupbody popuphover">
                                    <li><a href="forumdisplay.php?10-Download-vB4-Styles">Download vB4 Styles</a></li>
                                    <li><a href="project.php?projectid=3">Project vB Styles Version 4</a></li>
                            </ul>
                        </li>
                        <li class="popupmenu">
                            <a href="javascript://" class="popupctrl">Loyal Member Styles</a>
                            <ul class="popupbody popuphover">
                                    <li><a href="forumdisplay.php?22-Loyal-Member-vB4-Styles">Loyal Member vB4 Styles</a></li>
                                    <li><a href="project.php?projectid=4">Project vB4 Styles Loyal Members</a></li>
                            </ul>
                        </li>
                </ul> ';

} 
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="forum.php?page=2">Styles Forums</a>'.$tablinks.'</li>' ;
In use here:
http://www.styleorigin.com/vbstyles/forum.php

The link navigates to the page well enough but obviously the tab doesn't higlight and the pop-up menus do not appear. I know this is because of the incorrect use of the THIS_SCRIPT, but I don't know what to use instead.

Do you have any ideas please?
Reply With Quote
  #293  
Old 06-06-2010, 09:15 AM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

@Alice. Have you tried if(THIS_SCRIPT == 'index' AND $_REQUEST['page'] == 2) ?
Reply With Quote
  #294  
Old 06-06-2010, 09:49 AM
wonderfulwat wonderfulwat is offline
 
Join Date: Jun 2010
Posts: 58
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi, great site! I need some help.

When I unselect "Sections to Display in the Navbar Sub-Menu" I end up losing the Home tab. Is there any way to keep the Home tab present? It remains on every other screen (ie. when I'm in the forums - screenshots attached). My site is: www.wonderfulwaterloo.com if you want to check out the error.

I imagine it has something to do with this, and I tried to play around with it but the forum stopped working.

Edit Plugin Navbar: Insert CMS Navbar Entry

Code:
if (defined('CMS_SCRIPT') AND class_exists('vBCms_Navbar'))
{
	$vbulletin->options['selectednavtab'] = 'vbcms';
	$template_hook['navtab_start'] .= vBCms_NavBar::renderView();
}
else
{
	$template_hook['navtab_start'] .= vB_Template::create('vbcms_navbar_link')->render();
        $template_hook['navbar_getnew_menu'] .= vB_Template::create('vbcms_navbar_whatsnew_link')->render();
}
Attached Images
File Type: jpg HomePage Navbar.jpg (46.8 KB, 0 views)
File Type: jpg Forum Navbar.jpg (20.4 KB, 0 views)
File Type: jpg Sections to Display in the Navbar Sub-Menu.jpg (15.7 KB, 0 views)
Reply With Quote
  #295  
Old 06-07-2010, 07:00 AM
AliceHoward AliceHoward is offline
 
Join Date: Mar 2010
Location: Oxford, England
Posts: 188
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lionel View Post
@Alice. Have you tried if(THIS_SCRIPT == 'index' AND $_REQUEST['page'] == 2) ?
Oh you darling, that works wonderfully well, thank you ever so much sweetie.
Reply With Quote
  #296  
Old 06-29-2010, 08:16 AM
Wormy! Wormy! is offline
 
Join Date: Oct 2008
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Wormy! View Post
Hmmm... how/where do I do that? Please

I'm trying to get the standard highlight/floating bar which shows above the tab...

Thank you!!

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

If I follow your tutorial... should that not be the case? Apologies for all the questions...
Hi Lynne

Appreciate all of your help... and I have all working bar one last thing...

When a user lands on my home page (by clicking on the new 'HOME' button I created), the highlighted button remains as the 'FORUMS' button? If they are on the home page, I would like them to see the 'HOME' button (which is the one I created with your mod) to be highlighted.

Are you able to help me work out this last aspect pls?

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

If your custom tab is not getting highlighted, then you probably don't have your condition for it written correctly. As I specified, that condition MUST be unique or it won't work.
Reply With Quote
  #298  
Old 07-02-2010, 10:06 AM
Wormy! Wormy! is offline
 
Join Date: Oct 2008
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Lynne

It is unique... and that's what's puzzling me 8|

It ighlights when it mouse overs... no problem there... BUT when a user clicks on the 'Home' tab and is directed there... the 'Forums' tab still remains as the highlighted option?

Does that make sense?

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

What is that unique condition?
Reply With Quote
  #300  
Old 07-02-2010, 08:30 PM
Wormy! Wormy! is offline
 
Join Date: Oct 2008
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Lynne

Heres my code:

Code:
$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'home_tab')
{
    $vbulletin->options['selectednavtab']='home_tab';
    $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_start'] .= '<li'.$tabselected.'><a class="navtab" href="http://www.technologyatplay.com">Home</a>'.$tablinks.'</li>' ;
Appreciate your help!
Reply With Quote
  #301  
Old 07-02-2010, 08:41 PM
pant pant is offline
 
Join Date: Mar 2010
Posts: 203
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Has anyone posted how to get the 'quick links' drop down on every page yet?
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 04:46 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.05390 seconds
  • Memory Usage 2,373KB
  • 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
  • (3)bbcode_code
  • (4)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
  • (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
  • (4)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