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
  #102  
Old 12-30-2009, 08:44 PM
demojames demojames is offline
 
Join Date: Sep 2005
Location: Kent, WA.
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks, Lynne! Worked perfectly for me with no issues.

Edit: One quick question, is there a way to use a condition to show the sublinks/dropdown links to just a certain usergroup? I tried a template condition, but that didn't work.
Reply With Quote
  #103  
Old 12-30-2009, 10:26 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 demojames View Post
Thanks, Lynne! Worked perfectly for me with no issues.

Edit: One quick question, is there a way to use a condition to show the sublinks/dropdown links to just a certain usergroup? I tried a template condition, but that didn't work.
I believe there are examples of how to do that on pages 2 and 4 of this thread.
Reply With Quote
  #104  
Old 12-30-2009, 10:28 PM
demojames demojames is offline
 
Join Date: Sep 2005
Location: Kent, WA.
Posts: 47
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sorry about that, I just read the entire thread and saw that.

Thanks again
Reply With Quote
  #105  
Old 01-01-2010, 11:25 AM
kersti kersti is offline
 
Join Date: Dec 2005
Posts: 137
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I just want to add in a simple link on the nav bar so I tried this and tried just removing the navlinks section of the code. The result was that my Blogs link disappeared and that was all.

What do I need to do to make this just a link on the nav bar to an external site (the add-on has problems and I'd prefer to have everything done "properly")
Reply With Quote
  #106  
Old 01-01-2010, 02:19 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

There are mods to just add a simple link with no submenu. You are probably better off just using one of them.
Reply With Quote
  #107  
Old 01-02-2010, 07:53 AM
Meje Meje is offline
 
Join Date: Oct 2007
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello!

Ive read through the entire thread, and managed to get it all working by the end!! Thanks Lynne, for all your detailed replies, it really helped me to get it working.

Im stuck at one last thing though.......how do I get all the links in the sub menu to stay on the new tab when you click on them?

I have all my links in the sub menus going to VB Pages Ive created myself.

But when I click on each link, while it takes me to the new VB page Ive created, the tab and submenu returns to the Forum tab.

Ive played around with it a bit, but cant figure out how to make it work with multiple pages.....?

Please let me know if you need any additional info to help you understand what it is Im trying to do.
Reply With Quote
  #108  
Old 01-02-2010, 08:51 AM
GRE GRE is offline
 
Join Date: Nov 2009
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is there a way to replace tabs with images?
Reply With Quote
  #109  
Old 01-02-2010, 09:36 AM
MikeWarner's Avatar
MikeWarner MikeWarner is offline
 
Join Date: Nov 2001
Location: UK
Posts: 133
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Great post Lynne! I'm not that great at hacks, but I managed to get this to work for a CMS news section. I thought others may want to know how to do this too. This is how I did it:

Copy the original vBulletin file "content.php" and save as "about.php" (or whatever filename you wish)

In your new about.php file Change:

Code:
define('CMS_SCRIPT', true);
define('THIS_SCRIPT', 'vbcms');
to
Code:
// define('CMS_SCRIPT', true);
define('THIS_SCRIPT', 'about_ridehub');
Ensure you comment out the first line as shown about, this stops the default CMS section links from showing in the lower area. I used "about_ridehub' for THIS_SCRIPT, but you can use anything you want, just make sure it is unique and set as per this How-To.

Upload your new .php file to forum root.

Make sure the CMS section you want this new nav bar to work with is "Not Published" otherwise Google will find duplicate content. This can be done in the Section Manager in the AdminCP.

Now instead of linking to (for example):
http://www.yoursite.co.uk/content.php/48-About

You can use:
http://www.yoursite.co.uk/about.php/48-About

Add these links to the menu bar, and it should all work ok.

See here for an example:
http://www.ridehub.co.uk/about.php/48-What-is-RideHub
Reply With Quote
  #110  
Old 01-02-2010, 03:29 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 Meje View Post
I have all my links in the sub menus going to VB Pages Ive created myself.

But when I click on each link, while it takes me to the new VB page Ive created, the tab and submenu returns to the Forum tab.

Ive played around with it a bit, but cant figure out how to make it work with multiple pages.....?

Please let me know if you need any additional info to help you understand what it is Im trying to do.
In the plugin code is a condition that sets when your tab is 'selected'. In my example I have this condition:
PHP Code:
if (THIS_SCRIPT == 'yourpage'
If you want it to stay highlighted for... say... all threads in forumids 11, 12, and 13 also, then you need to add in that condition:
PHP Code:
if (THIS_SCRIPT == 'yourpage' OR in_array($GLOBALS['forumid'], array(111213))) 
I'm not sure what your condition would be since you didn't really verbalize it, but I hope what I wrote helps.
Reply With Quote
  #111  
Old 01-02-2010, 09:55 PM
Meje Meje is offline
 
Join Date: Oct 2007
Posts: 28
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for the reply Lynne.

I want the tab to stay selected, when I am on any of the pages in the submenu of the new tab.

Looks like it might be easier to show you the code? Its only going to make it easier for others trying to do the same thing to understand too

I have created a new tab called "Site Info'. I have also created my own VB page for it to link to.

This is the code for the plug in:

PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'ip_site_information')
{
    
$vbulletin->options['selectednavtab']='ip_site_information';
    
$tabselected ' class="selected"';
    
$tablinks '                <ul class="floatcontainer">
                        <li><a href="our_philosophy.php">Our Philosophy</a></li>
                            <li class="popupmenu">
                                <a href="javascript://" class="popupctrl">Advertising</a>
                                <ul class="popupbody popuphover">
                                        <li><a href="banner_advertising.php">Banner Advertising</a></li>
                                        <li><a href="sig_advertising.php">Signature Advertising</a></li>
                                    
                                </ul>
                            </li>
                        <li><a href="donations.php">Donations</a></li>
                        <li><a href="sendmessage.php.php">Contact Us</a></li>
                </ul> '
;


$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="ip_site_information.php">Site Info</a>'.$tablinks.'</li>' 
and this is the condition in my 'Site Info' VB page I created:

PHP Code:
define('THIS_SCRIPT''ip_site_information'); 
Everything works as it should with all the above code for the Site Info tab & Page.

I have 4 other VB pages I created myself. They are the the ones listed in the submenu of the new tab "Site Info' See first image attached.

For these 4 links in the submenu, the condition in each of their VB pages is as follows:

Our Philosophy Page:
PHP Code:
define('THIS_SCRIPT''our_philosophy'); 
Advertising is a drop down menu, so contains the 2 links, 'Sig Advertising' and 'Banner Advertising' that have their own VB pages.

Sig Advertising Page:
PHP Code:
define('THIS_SCRIPT''sig_advertising'); 
Banner Advertising Page:
PHP Code:
define('THIS_SCRIPT''banner_advertising'); 
Donations Page:
PHP Code:
define('THIS_SCRIPT''donations'); 
Now when I click on any of these links, you can see what happens in the second attached image, that while it takes me to the page I want it to, the tab thats selected is the Forum tab and all its submenus. Where as I want the new tab, 'Site Info' and all its submenus to remain selected when I click on these submenu links.
Attached Images
File Type: png Screen shot 2010-01-03 at 10.36.48 AM.png (31.3 KB, 0 views)
File Type: png Screen shot 2010-01-03 at 10.37.14 AM.png (32.3 KB, 0 views)
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 11:49 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.05144 seconds
  • Memory Usage 2,385KB
  • 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
  • (12)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
  • (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
  • (3)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