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
  #232  
Old 04-02-2010, 01:53 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 Jason92s View Post
Thanks for the reply Lynne...I actually have no clue what I'm doing (is it that obvious?). I just want to have a new link called Local Links that when clicked will show 4 new sublinks with their own links. On the new tab I really don't need it to display any content when it's clicked, just the links. Is this the right mod for me? Thanks again.
It would be the correct mod, however you need to define exactly *when* those sub-menus are supposed to show. If you can't define that, then your sub-menus will never show.
Reply With Quote
  #233  
Old 04-03-2010, 02:31 AM
Lynk Lynk is offline
 
Join Date: Aug 2009
Posts: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Lynne, this is brilliant! I upgraded my forums (drzforums.com) last night, and ran into a few pain-points. Using your instructions, I created the navigation tabs that I would like, reusing all of the sub-menu links from the "Forum" tab. Now, I'm left with one more question, which I am having difficulty finding through search.

There is one "Quick Link" that refers to a javascript code bite. How do I program "Open Contacts Popup?" Can you point me in the right direction?

Thank you for the trouble you went through to document the tab creation process!

Heh... I guess I'm going to have to setup some conditionals for several of the sub-menu items. (I just viewed my site as a guest.)
Reply With Quote
  #234  
Old 04-03-2010, 03:01 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 Lynk View Post
There is one "Quick Link" that refers to a javascript code bite. How do I program "Open Contacts Popup?" Can you point me in the right direction?
I'm not sure what you mean by How do you program it.
Reply With Quote
  #235  
Old 04-04-2010, 07:07 PM
NashChristian's Avatar
NashChristian NashChristian is offline
 
Join Date: Jul 2007
Location: Nashville, TN
Posts: 292
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

THANKS Lynne! Very helpful!
Reply With Quote
  #236  
Old 04-05-2010, 12:45 AM
Jason92s Jason92s is offline
 
Join Date: Mar 2009
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
It would be the correct mod, however you need to define exactly *when* those sub-menus are supposed to show. If you can't define that, then your sub-menus will never show.
Gotcha...I only want them to show when I click the tab that they belong to. In a perfect world, when the user clicks a tab called Local Links, they will see 3 submenus appear below: 1) EG, 2) Laguna, 3) Sac. Then each of those will have their own URL or additional sub-menus to offsite pages or whatever. The "Local Links" page that opens when the user clicks the tab doesn't need any data if that's possible. Or if it must contain text, then I can just enter something describing the page to the user. Does that make any sense and is it possible? Thank you.
Reply With Quote
  #237  
Old 04-05-2010, 02:59 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 Jason92s View Post
Gotcha...I only want them to show when I click the tab that they belong to. In a perfect world, when the user clicks a tab called Local Links, they will see 3 submenus appear below: 1) EG, 2) Laguna, 3) Sac. Then each of those will have their own URL or additional sub-menus to offsite pages or whatever. The "Local Links" page that opens when the user clicks the tab doesn't need any data if that's possible. Or if it must contain text, then I can just enter something describing the page to the user. Does that make any sense and is it possible? Thank you.
Ok, so write that as a condition now. For other vbulletin pages, THIS_SCRIPT is defined at the top - so if you only want something to happen on the showthread page, the condition is THIS_SCRIPT == 'showthread'... so, what defines your page? Have you defined THIS_SCRIPT in it? If so, just use that as the condition in the plugin.
Reply With Quote
  #238  
Old 04-05-2010, 03:22 AM
Jason92s Jason92s is offline
 
Join Date: Mar 2009
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Do you know if it's possible to use vbAdvanced to create a BB Code page and have it work with this mod then? If memory serves the url looks something like sitename.com/index.php?pageid=pagename

what would you use for THIS_SCRIPT in that situation?

SOLVED:

I used:

if (THIS_SCRIPT == 'adv_index' AND $pages['name'] == 'testpage')
Reply With Quote
  #239  
Old 04-07-2010, 12:51 PM
alfanexus alfanexus is offline
 
Join Date: Dec 2008
Posts: 51
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I want to create a tab for a specific section in the CMS. Is there a way to get the section name in the PHP code?

I can see the section name in the navbar so maby I can get the navbar text and use this for a compare?

I was thinking something like

PHP Code:
if (THIS_SCRIPT == 'vbcms')
{
          if (
sectionname =='My Section')
          {
           
$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> '
;


          }


Please can anyone help? I have searched for this the whole day
Reply With Quote
  #240  
Old 04-07-2010, 01:58 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 alfanexus View Post
I want to create a tab for a specific section in the CMS. Is there a way to get the section name in the PHP code?

I can see the section name in the navbar so maby I can get the navbar text and use this for a compare?

I was thinking something like

Please can anyone help? I have searched for this the whole day
You didn't put anything in your code that showed what variable names you have tried for the section name.
Reply With Quote
  #241  
Old 04-07-2010, 02:19 PM
alfanexus alfanexus is offline
 
Join Date: Dec 2008
Posts: 51
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
You didn't put anything in your code that showed what variable names you have tried for the section name.
No that was my question what variable names can I use to get a section?

Sorry if I am not being clear, I was hoping someone new a way to check for a section name in the php code.
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 05:01 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.21414 seconds
  • Memory Usage 2,373KB
  • Queries Executed 28 (?)
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
  • (5)bbcode_php
  • (6)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_postinfo_query
  • fetch_postinfo
  • 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