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

Sorry, I mixed you up with jacx. Anyway, I posted the solution for your problem on the previous page of this thread, #199
Reply With Quote
  #223  
Old 03-31-2010, 11:34 AM
Yonatan Yonatan is offline
 
Join Date: Jun 2008
Posts: 46
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by cellarius View Post
Sorry, I mixed you up with jacx. Anyway, I posted the solution for your problem on the previous page of this thread, #199
I got this error:
Quote:
Fatal error: Call to a member function getNodeId() on a non-object in /home/*username*/public_html/vb/includes/class_bootstrap.php(399) : eval()'d code on line 3
when I used this code.

this is my code:
PHP Code:
$tabselected '';
$tablinks '';
if (
in_array($this->content->getNodeId(), 5))  
{
    
$vbulletin->options['selectednavtab']='content.php?r=5';
    
$tabselected ' class="selected"';
    
$tablinks '';

}
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="content.php?r=5">News</a>'.$tablinks.'</li>' 
Reply With Quote
  #224  
Old 03-31-2010, 02:09 PM
jacx jacx is offline
 
Join Date: Mar 2006
Posts: 26
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
Why couldn't you link to that?


Instead of:
PHP Code:
<a href="/page.php">A page on your site</a
do:
PHP Code:
<a href="http://www.anothersite.com/page">A page on another site</a

when i tried that it took me to http://mysite.com/link.php

Edit...im trying to post the code i used and keep getting "Bad Request" when i do it..anyone know what im doing wrong so i can post what i had entered?
Reply With Quote
  #225  
Old 03-31-2010, 06:00 PM
vglobal vglobal is offline
 
Join Date: Oct 2009
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Lynne,

If I want only the user with id=1 to see the link. What I have to do?

Thanks.
Reply With Quote
  #226  
Old 03-31-2010, 06:59 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 jacx View Post
when i tried that it took me to http://mysite.com/link.php
Then you have a setting or modification that is doing that. If you have the link written as going to http://www.somesite.com/link.php then it should go there, not to your site.
Quote:
Originally Posted by vglobal View Post
Hi Lynne,

If I want only the user with id=1 to see the link. What I have to do?

Thanks.
This was covered, I think, on page 2 or 3.
Reply With Quote
  #227  
Old 03-31-2010, 07:08 PM
Jason92s Jason92s is offline
 
Join Date: Mar 2009
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I created a PHP file with nothing in it but the following:

PHP Code:
<?php
define
('THIS_SCRIPT''locallinks');
?>
My plugin script has the following:

PHP Code:
if (THIS_SCRIPT == 'locallinks')
{
    
$vbulletin->options['selectednavtab']='locallinks'
At the bottom of the plugin is:

PHP Code:
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="/index.php?pageid=locallinks">Test Link</a>'.$tablinks.'</li>' 

When I click on my new tab, it highlights the Forum tab and shows all the regular stuff found under Forum (New Posts, Private Messages, FAQ, etc).

Any help is appreciated.
Reply With Quote
  #228  
Old 03-31-2010, 07:54 PM
vglobal vglobal is offline
 
Join Date: Oct 2009
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
This was covered, I think, on page 2 or 3.
Thanks, but that is cover for usergroup.

I create new NavTab as follow, and I want only me to see the Chat Admin. Please help.
Code:
$tabselected = ''; 
                $tablinks = ''; 
                if (THIS_SCRIPT == 'chat') 
                    { 
                    $vbulletin->options['selectednavtab']='chat'; 
                    $tabselected = ' class="selected"'; 
                    $tablinks = ' <ul class="floatcontainer"> 
                        <li><a href="chat/admin.php" target="_blank">Chat Admin</a></li></ul> '; 
                    }  
                $template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="chat.php">Chat</a>'.$tablinks.'</li>' ;
Reply With Quote
  #229  
Old 03-31-2010, 11:42 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
I created a PHP file with nothing in it but the following:

PHP Code:
<?php
define
('THIS_SCRIPT''locallinks');
?>
According to your code, your page is located at http://yoursite.com/index.php?pageid=locallinks Yet, I'm guessing that is not the link to your actual php page you created above? You you get sent to index.php which is probably forwarded to your forum.php page (check the script) and thus the Forum tab gets highlighted.
Quote:
Originally Posted by vglobal View Post
Thanks, but that is cover for usergroup.

I create new NavTab as follow, and I want only me to see the Chat Admin. Please help.
Code:
$tabselected = ''; 
                $tablinks = ''; 
                if (THIS_SCRIPT == 'chat') 
                    { 
                    $vbulletin->options['selectednavtab']='chat'; 
                    $tabselected = ' class="selected"'; 
                    $tablinks = ' <ul class="floatcontainer"> 
                        <li><a href="chat/admin.php" target="_blank">Chat Admin</a></li></ul> '; 
                    }  
                $template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="chat.php">Chat</a>'.$tablinks.'</li>' ;
Instead of this sort of condition:
PHP Code:
if (is_member_of($vbulletin->userinfo567)) 
You would use this sort of condition:
PHP Code:
if ($vbulletin->userinfo['userid'] == 1
You probably want to wrap that condition around the full contents of the plugin if it is only to show for that userid.
Reply With Quote
  #230  
Old 03-31-2010, 11:47 PM
vglobal vglobal is offline
 
Join Date: Oct 2009
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you very much.
Reply With Quote
  #231  
Old 04-01-2010, 03:49 PM
Jason92s Jason92s is offline
 
Join Date: Mar 2009
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
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:25 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.08763 seconds
  • Memory Usage 2,383KB
  • 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
  • (13)bbcode_php
  • (8)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