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
  #272  
Old 05-07-2010, 10:27 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 mclarens View Post
Hey Lynne, great tread, can finaly add links to my nav bar.

This might be abit offtopic but, i was thinking to change my "Home" button on the navbar to another side and been searching around without no exacly explainable answer how to to do that.
Do you know how to do that or where i can find the answer on that?
Just change the template_hook it is using. Plugin - Navbar: Insert CMS Navbar Entry
Reply With Quote
  #273  
Old 05-08-2010, 09:16 AM
mclarens mclarens is offline
 
Join Date: May 2010
Posts: 18
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ahh thanks alot
Reply With Quote
  #274  
Old 05-10-2010, 04:42 PM
mordor1 mordor1 is offline
 
Join Date: Apr 2010
Posts: 17
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I got it working for 1 link but now i want to make one for the FAQ too

Code:
Plugin PHP Code
$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'faq.php')
{
    $vbulletin->options['selectednavtab']='faq_ftn';
    $tabselected = ' class="selected"';
    $tablinks = '                <ul class="floatcontainer">
                        <li><a href="faq.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="faq.php">FAQ</a>'.$tablinks.'</li>' ;
The link Faq is not highlighted now when its selected
Reply With Quote
  #275  
Old 05-10-2010, 07:33 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This is not valid for the faq page:
PHP Code:
if (THIS_SCRIPT == 'faq.php'
Open the file faq.php and find what THIS_SCRIPT is defined to be at the top.
Reply With Quote
  #276  
Old 05-10-2010, 09:25 PM
Jonas Clark Jonas Clark is offline
 
Join Date: May 2010
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Lynne, Everything worked great... execution controls order of tab.
Reply With Quote
  #277  
Old 05-11-2010, 05:46 PM
mordor1 mordor1 is offline
 
Join Date: Apr 2010
Posts: 17
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
This is not valid for the faq page:
PHP Code:
if (THIS_SCRIPT == 'faq.php'
Open the file faq.php and find what THIS_SCRIPT is defined to be at the top.
thx its faq without .php ....
Reply With Quote
  #278  
Old 05-18-2010, 04:57 PM
Bansheebob Bansheebob is offline
 
Join Date: Apr 2009
Posts: 93
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I cant believe we have to go through all this to add simple links to a navbar. What the hell? I dont know how to do all this. Make my own plugin, your kidding right? Now I'm gonna have to pay someone to add a few links to my navbar, unlike 3.8 where it was as easy as a simple template edit/addition. Unreal. I'm starting to see why people are going back to the old vb forums.
Reply With Quote
  #279  
Old 05-18-2010, 05:04 PM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Bansheebob View Post
I cant believe we have to go through all this to add simple links to a navbar. What the hell? I dont know how to do all this. Make my own plugin, your kidding right? Now I'm gonna have to pay someone to add a few links to my navbar, unlike 3.8 where it was as easy as a simple template edit/addition. Unreal. I'm starting to see why people are going back to the old vb forums.
I can understand your frustration, but a thread where a volunteer took the time to explain what is clearly too difficult is not the place to vent, really. Lynne or her tutorial are not to be blamed for this.
Reply With Quote
  #280  
Old 05-18-2010, 05:07 PM
Bansheebob Bansheebob is offline
 
Join Date: Apr 2009
Posts: 93
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I wasnt blaming Lynne, she actually helped me yesterday with another issue. Just frustrated because on 3.8 I could edit anything in templates very easily and now in vb4 it's like you need a college course. They say in another thread "find this code" in navbar template and I look and its not even there in my code. I cant win today, starting to dislike vb4 bigtime.
Reply With Quote
  #281  
Old 05-19-2010, 11:31 PM
Wilfred1 Wilfred1 is offline
 
Join Date: Jul 2009
Posts: 99
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Lynne - thank you for this and I have played around with it and with some small changes to suit my needs it works well.

But I would like to add that I am having an issue with this whole new navbar setup for v4 especially given that the navbar is the most changed component, in my opinion, in vb.

I use a navbar that is very similar to the new v4 one except with the added functionality of being able to hover on a tab and access the submenu of that tab for a set millisecond time before it bounces back to the currently selected tab.

To do this I have to set the criteria for its use when using v3.8.5:
Code:
<script type="text/javascript">
    <if condition="in_array(THIS_SCRIPT, array('adv_index', 'about', 'sendmessage','support','staff','memberlist','online', 'private', 'register'))">tabmenu.definemenu("menu", 0)</if>
    <if condition="in_array(ADV_DYNA_PREFIX, array('aircraft', 'acnotice'))">tabmenu.definemenu("menu", 1)</if>
    <if condition="in_array(THIS_SCRIPT, array('aircraft_register', 'aircraft_types'))">tabmenu.definemenu("menu", 1)</if>
    <if condition="in_array(THIS_SCRIPT, array('blog', 'blog_usercp'))">tabmenu.definemenu("menu", 2)</if>
    <if condition="in_array(ADV_DYNA_PREFIX, array('clubs', 'download', 'terms'))">tabmenu.definemenu("menu", 3)</if>
    <if condition="in_array(THIS_SCRIPT, array('calendar', 'view', 'vbgooglemaphse', 'links_index', 'quiz', 'weather', 'weather_arfor', 'weather_metar', 'weather_taf', 'weather_sigmet', 'flight_planner'))">tabmenu.definemenu("menu", 3)</if>
    <if condition="in_array(THIS_SCRIPT, array('index', 'album', 'group', 'search', 'showthread', 'forumdisplay', 'newthread'))">tabmenu.definemenu("menu", 4)</if>
    <if condition="in_array(ADV_DYNA_PREFIX, array('quotes'))">tabmenu.definemenu("menu", 5)</if>
    <if condition="in_array(THIS_SCRIPT, array('arcade', 'gallery_index', 'gallery_upload', 'gallery_search', 'gallery_slideshow', 'gallery_albums', 'gallery_edit', 'gallery_delete', 'vbtubepro', 'youtube_browser'))">tabmenu.definemenu("menu", 5)</if>
    <if condition="in_array(THIS_SCRIPT, array('profile', 'member', 'subscription'))">tabmenu.definemenu("menu", 6)</if>
    <if condition="ADV_DYNA_PREFIX == 'classifi'">tabmenu.definemenu("menu", 8)</if>
    <if condition="$pg=='advertising_rates'">tabmenu.definemenu("menu", 0)</if>
</script>
Following this criteria are all the different sub menus which are listed as ul and li's.

As you can see it is a "dogs breakfast" of an array and trying to convert this to a more vb way using your great tutorial here is really, for me, going from one "dog's breakfast" to another.

So I raise this question...there must be a better way for everyone to manage their v4 navbar?

Could a global variable be created and:
- each time a user clicks a tab or submenu item the global variable is set to a number to correspond to the tab id
- the page changes to the linked page
- the tab that corresponds to the global variable is then made "selected"

Very little code would be needed to facilitate this, you wouldn't need to worry about "THIS SCRIPT" or any other definition of what page is being displayed, very simple to include a setting of the global variable on clicking, and then reading the variable on page display etc.

Is this an option? Would it make the navbar easier to manage? Would it improve performance?
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 02:50 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.05531 seconds
  • Memory Usage 2,370KB
  • 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
  • (3)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