Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 4 Articles

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
  #502  
Old 01-24-2012, 12:10 PM
Ziki's Avatar
Ziki Ziki is offline
 
Join Date: Nov 2005
Posts: 2,704
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Lynne,

is it possible to make the dropdown menu a link? I mean that clicking the arrow next to the item would result in showing the dropdown, but clicking the actual link would take you to the page I specify?

Thanks
Reply With Quote
  #503  
Old 01-24-2012, 04:25 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 leftanalog View Post
Im not sure why, but I cannot get ANY tabs to show up to the right of the what's new tab. Ive tried Mods (from vb.org) as well as this. Ive tried this code stock. I cannot get ANY tab to show up to the right of my "What's New" tab.

Currently I only have FORUMS, and WHATS NEW.

What could be the issue? Any help please?
What template_hook are you using? What execution order?

Quote:
Originally Posted by Ziki View Post
Hi Lynne,

is it possible to make the dropdown menu a link? I mean that clicking the arrow next to the item would result in showing the dropdown, but clicking the actual link would take you to the page I specify?

Thanks
I would guess you could, but you'd need to change the <a> tags and probably include the image for the dropdown and link to it also.
Reply With Quote
  #504  
Old 01-24-2012, 04:47 PM
leftanalog leftanalog is offline
 
Join Date: May 2011
Posts: 34
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
What template_hook are you using? What execution order?
I think I figured it out.

Had a custom hook
{vb:raw template_hook.navbar_after_getnew}

edit: Nvm taking that out didnt do anything.

So this is the coding for my navbar tabs

PHP Code:
{vb:raw template_hook.navtab_start}
        <
vb:if condition="!$vboptions['selectednavtab'] AND THIS_SCRIPT != 'search'">
            <
li class="selected"><class="navtab" href="http://leftanalog.net/forums">{vb:rawphrase forum}</a>
                <
ul class="floatcontainer">
                    {
vb:raw template_hook.navbar_start}
                    <
vb:if condition="$show['searchbuttons']">
                        <
vb:if condition="$show['member']">
                        <
vb:else />
                        <
li><a href="search.php?{vb:raw session.sessionurl}do=getdaily&amp;contenttype=vBForum_Post">{vb:rawphrase todays_posts}</a></li>
</
vb:if>
</
vb:if> 
Then it goes into the lower bar under the tabs and starts with those. Is there anything in there, that would prevent a tab to display to the right of What's New".

I cant figure it out. It must be a conflicting plugin?

Im not that great with VB language. Any help would be appreciated.

EDIT 2: I figured it out. Well not really, but I just reverted my template and started it from scratch again. Not sure what I was missing or what, but I have the results I wanted by reverting it, and then modifying that code.

Thanks
Reply With Quote
  #505  
Old 01-24-2012, 08:46 PM
JErix JErix is offline
 
Join Date: Nov 2011
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello, great description. Took me a minute to figure it out, but, I got it working and I'm a pretty big newb, so, thank you.

I was wondering if there was a way to insert the new tab in a specific spot along the menu. I have 5 tabs so far, and I want this new one I created to be 4th in line. I know you can do navtab_middle, navtab_end, but, neither of those will put it in the 4th position.

Thanks for any info on how to change this.

Cheers.
Reply With Quote
  #506  
Old 01-24-2012, 09: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 JErix View Post
Hello, great description. Took me a minute to figure it out, but, I got it working and I'm a pretty big newb, so, thank you.

I was wondering if there was a way to insert the new tab in a specific spot along the menu. I have 5 tabs so far, and I want this new one I created to be 4th in line. I know you can do navtab_middle, navtab_end, but, neither of those will put it in the 4th position.

Thanks for any info on how to change this.

Cheers.
You may need to also change the execution order to get it into the exact right spot.
Reply With Quote
  #507  
Old 01-24-2012, 11:25 PM
JErix JErix is offline
 
Join Date: Nov 2011
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
You may need to also change the execution order to get it into the exact right spot.
I changed it to 4, and saved, since I want in the #4 spot. But, it's still in the middle (I'm using nav_middle at the present time). Would I also have to change the execution order of the other tabs? (I don't know where to look for those since I did not create plugins for them)
Reply With Quote
  #508  
Old 01-26-2012, 02:24 AM
malinghi malinghi is offline
 
Join Date: May 2011
Posts: 12
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
can you provide the full plugin code, either here or via PM and i'll take a proper look
PHP Code:
$tabselected ''
$tablinks ''
if (
THIS_SCRIPT == 'guides_script'

    
$vbulletin->options['selectednavtab']='Guides'
    
$tabselected ' class="selected"'
}  


$links = array("link 1""link 2""link 3");
$max sizeof($links);
$rand rand(0$max);

$template_hook['navtab_end'] .= ('<li'.$tabselected.'><a class="navtab" href=$links[$rand]>Nav Link</a>'.$tablinks.</li>'); 

This should be basically the same as the original plugin code Lynne posted. I took out the code for the drop down menu.
Reply With Quote
  #509  
Old 01-26-2012, 06:59 AM
Travis-Mc Travis-Mc is offline
 
Join Date: Sep 2009
Posts: 16
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by gm139 View Post
No. I do. I'm using a eloquent red skin. I want to try with the deafault one too. No I didn't modifi the plugin.

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



tried. REQUEST_URI is empty. Any idea?

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

I have finally found a way that works, with this condition:

Code:
if ($_SERVER['HTTP_REFERER'] == 'http://www.piacenzacalcio.net/vb/content.php?3-prossima-trasferta')
The condition is verified, but still the tab is not highlighted and submenus do not appear. here is the plugin:

Code:
$tabselected = ''; 
$tablinks = ''; 

if ($_SERVER['HTTP_REFERER'] == 'http://www.piacenzacalcio.net/vb/content.php?3-prossima-trasferta') 
{  $vbulletin->options['selectednavtab']='prossimatrasferta'; 
    $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> '; 

*/echo $tablinks;
die();*/

}  
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="content.php?3-prossima-trasferta">Prossima trasferta</a>'.$tablinks.'</li>' ;
I have verified that $tablinks is not empty, through the echo you can see.
If I understand your problem, you're trying to get your new tabs to be "selected" after you click on them, and they are page in the CMS like content.php?XX

This is what I did:

For each CMS Page create a plugin and the condition in the plugin would be something like this:

PHP Code:
if ($vbulletin->nodeid == XX
Where XX is the nodeid of the page

Since the articles are in the CMS, both the home tab and your new tab will be selected. To fix this, edit the plugin called
"Navbar: Insert CMS Navbar Entry"

Find:
PHP Code:
if (defined('CMS_SCRIPT') AND class_exists('vBCms_Navbar')) 
Replace:
PHP Code:
if (defined('CMS_SCRIPT') AND class_exists('vBCms_Navbar') AND !in_array($vbulletin->nodeid, array(XXXXXX))) 
I hope that helps.
Reply With Quote
  #510  
Old 02-13-2012, 06:33 PM
fldewey fldewey is offline
 
Join Date: Sep 2011
Posts: 20
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This is a great article - thanks to all who contributed.

What I am trying to do is add one more level to the dropdown. So for example if I click a pulldown, when I mouseover one of the options another set of options will display.

I thought I could add another <ul class="popupbody popuphover"> to this code, but that just covers the current menu up.

Can someone point me in the right direction? I'm not sure if this might be outside of the scope here.

Thanks
Reply With Quote
  #511  
Old 03-20-2012, 09:49 PM
Akyeame Kwame Akyeame Kwame is offline
 
Join Date: May 2008
Posts: 111
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hello,

I tried searches for separate, several, more than, and different so if it's been mentioned, I couldn't find it through all the pages.

I'd like to make several different tabs but when I do this with different plugins, the first one is in the bold style of the menu but the second one is just plain text in the style of the sub-menu. Should I put all the new tabs into one plugin? If so how? If I keep them in separate plugins, how do I keep them all in the same style of the top menu?

EDIT: I found the issue. The second time around I missed copying $tabselected = ''; so it was missing from the top. Works fine now.
Reply With Quote
Reply

Thread Tools

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 08:03 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.10215 seconds
  • Memory Usage 2,382KB
  • 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
  • (9)bbcode_php
  • (7)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
  • (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