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
  #62  
Old 11-26-2009, 04:50 PM
Eric Anderson Eric Anderson is offline
 
Join Date: Oct 2009
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for the quick reply... Great article. In the attachment you can see that I have it working. What I am looking to do is add a sub menu to the sub menu. I have the Tech Area tab then the sub menu that has Carbs trying to add a sub menu to carbs so it will have Cleaning link and Jetting link. So basically making when you click on carbs it does not take you to Carbs.php but opens a sub menu that would have links to jetting.php and Cleaning.php

Thanks
Eric
PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'Tech')
{
    
$vbulletin->options['selectednavtab']='Tech Area';
    
$tabselected ' class="selected"';
    
$tablinks '                <ul class="floatcontainer">
                        <li class="popupmenu">
                                <a href="javascript://" class="popupctrl">Vmax-4 750</a>
                                <ul class="popupbody popuphover">
                                        <li><a href="Carbs.php">Carbs</a></li>
                                        <li><a href="Clutch750.php">Clutching & Gearing</a></li>
                                        <li><a href="Pipes750.php">Pipes</a></li>
                                        <li><a href="Track.php">Track</a></li>
                                        <li><a href="Setup750.php">Setups</a></li>
                                </ul>
                            </li>
                            <li class="popupmenu">
                                <a href="javascript://" class="popupctrl">Vmax-4 800</a>
                                <ul class="popupbody popuphover">
                                        <li><a href="Carbs.php">Carbs</a></li>
                                        <li><a href="Clutch800.php">Clutching & Gearing</a></li>
                                        <li><a href="Pipes800.php">Pipes</a></li>
                                        <li><a href="Track.php">Track</a></li>
                                        <li><a href="Setup800.php">Setups</a></li>
                                </ul>
                            </li>
                        <li><a href="Specs.php">Stock Specs</a></li>
                </ul> '
;


$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="Tech.php">Tech Area</a>'.$tablinks.'</li>' 
Attached Images
File Type: jpg Techhelp.JPG (37.1 KB, 0 views)
Reply With Quote
  #63  
Old 11-26-2009, 04:53 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I don't know how to add a submenu to a submenu as I haven't tried to do that. You'll have to play with the css to do that.
Reply With Quote
  #64  
Old 11-30-2009, 08:33 PM
Anseur's Avatar
Anseur Anseur is offline
 
Join Date: Jun 2004
Location: Nottingham, UK.
Posts: 50
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is there any way to use vb if statements with this mod?

I tried wrapping certain links under the custom tab in the

Code:
<vb:if condition="$show['modcplink']">
*stuff here*
</vb:if>
(I only wish admins/mods to be able to see a certain link)

but it completely breaks this plugin, you get a
Quote:
Parse error: syntax error, unexpected T_STRING in /home/anseur/public_html/vb4test/includes/class_bootstrap.php(386) : eval()'d code on line 23
message from vb at the top of the custom page.

Does perhaps some other function have to be called in either this or the .php page in question? (I'm using the custom php page Lynne posted an article on in conjunction with this plugin)

the same vb if statement works if I put it elsewhere within a template that apears on the page, but I would like the link in question to be in the navbar and not in the body.
Reply With Quote
  #65  
Old 11-30-2009, 08:50 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This post shows how to use conditions to add the links - https://vborg.vbsupport.ru/showpost....6&postcount=28 See if that helps.
Reply With Quote
  #66  
Old 12-01-2009, 08:15 AM
Anseur's Avatar
Anseur Anseur is offline
 
Join Date: Jun 2004
Location: Nottingham, UK.
Posts: 50
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I actualy tried that way of doing it too, what happens if with is, the if conditional just gets put in the navbar as plain text, as if vb is not seeing it as a conditional. I notice the syntax highlighting on the plug code input page also doesn't color the extra if statement in green like the if statement at the top for the 'this_script ==' one.

Here's my complete code for the navtab plugin:

Code:
$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'dkp.php')
{
    $vbulletin->options['selectednavtab']='dkp_listmembers';
    $tabselected = ' class="selected"';
    $tablinks = '                <ul class="floatcontainer">



                            <li class="popupmenu">
                                <a href="javascript://" class="popupctrl">Administration</a>
                                <ul class="popupbody popuphover">
if (is_member_of($vbulletin->userinfo, 5, 6, 13, 14))  
{
                                        <li><a href="/25manwrathplus/admin/" target=dkp_frame>Eqdkp Admin Index</a></li>
                                        <li><a href="/25manwrathplus/plugins/ctrt/" target=dkp_frame>Import CTRA String</a></li>
                                        <li><a href="/25manwrathplus/admin/addiadj.php" target=dkp_frame>Do Adjustments</a></li>
}

                                </ul>
                            </li>


                        <li><a href="/25manwrathplus/listmembers.php?s=" 
target=dkp_frame>Standings</a></li>
                        <li><a href="/25manwrathplus/listraids.php?s=" 
target=dkp_frame>Raids</a></li>
                         <li><a href="/25manwrathplus/listevents.php?s=" 
target=dkp_frame>Events</a></li>
                         <li><a href="/25manwrathplus/listitems.php?s=" 
target=dkp_frame>items</a></li>
                         <li><a href="/25manwrathplus/listitems.php?s=&p=history" 
target=dkp_frame>History</a></li>
                         <li><a href="/25manwrathplus/stats.php?s=" 
target=dkp_frame>Stats</a></li>
                         <li><a href="/25manwrathplus/plugins/raidplan/listraids.php?s=" 
target=dkp_frame>Raid Planner</a></li>
                         <li><a href="/25manwrathplus/plugins/raidplan/raidstats.php?s=" 
target=dkp_frame>Raid Planner Stats</a></li>


                            <li class="popupmenu">
                                <a href="javascript://" class="popupctrl">Your DKP Account</a>
                                <ul class="popupbody popuphover">

                                        <li><a href="/25manwrathplus/settings.php?mode=account" target=dkp_frame>Account Settings</a></li>
                                        <li><a href="/25manwrathplus/plugins/raidplan/usersettings.php" target=dkp_frame>Raid Planner Settings</a></li>
                                        <li><a href="/25manwrathplus/login.php?logout=true" target=dkp_frame>Log Out of Eqdkp</a></li>
                                        <li><a href="/25manwrathplus/login.php" target=dkp_frame>Log Into Eqdkp</a></li>

                                </ul>
                            </li>

                </ul> ';


} 
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href="dkp.php">DKP</a>'.$tablinks.'</li>' ;
I tried putting the conditional before the first <li> on the top most popup control, before the <a> just below it, and where you see it now. (with the bracket closed in the appropriate place in each instance. same thing happens on each occasion.

Only difference I can see in the example you gave and my version, is I'm trying to hide an entire popup control to non admins, your example just tries to hide a link.
Reply With Quote
  #67  
Old 12-01-2009, 02:34 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'd suggest you start over with the plugin because you've totally messed up the structure of the submenu.

The reason why you are ending up with the condition showing up in the code is because you are putting it there. Look again at the code I wrote. You need to *end* your writing to the variable $tablinks, then do the condition and add to $tablinks if the condition is true, and then continue writing to it later on. But, you need to break out of writing to it in order to do the condition - you just put the condition right in the middle of it! Basically:
PHP Code:
$tablinks 'a bunch of stuff';
if (
is_member_of($vbulletin->userinfo561314))  
{
      
$tablinks .= 'more stuff if condition is true';
}
$tablinks .= 'and more stuff'
Reply With Quote
  #68  
Old 12-01-2009, 03:18 PM
Anseur's Avatar
Anseur Anseur is offline
 
Join Date: Jun 2004
Location: Nottingham, UK.
Posts: 50
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
I'd suggest you start over with the plugin because you've totally messed up the structure of the submenu.
Nah, no need. It's not 'messed up' it's layout is exactly how I intend it to look, with multiple drop downs etc. It works perfectly without the condition in it.

Quote:
Originally Posted by Lynne View Post
But, you need to break out of writing to it in order to do the condition - you just put the condition right in the middle of it! Basically:
PHP Code:
$tablinks 'a bunch of stuff';
if (
is_member_of($vbulletin->userinfo561314))  
{
      
$tablinks .= 'more stuff if condition is true';
}
$tablinks .= 'and more stuff'
From this example I understand. I'm not really a coder so I didn't understand what the $tablinks did, now with that example, I do.

Thanks again.
Reply With Quote
  #69  
Old 12-01-2009, 03: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 Anseur View Post
Nah, no need. It's not 'messed up' it's layout is exactly how I intent it to look, with multiple drop downs etc. It works perfectly without the condition in it.
Maybe I did something weird on my end, but when I tried it, it did some wacky things.
Reply With Quote
  #70  
Old 12-02-2009, 09:07 PM
oooh em geee oooh em geee is offline
 
Join Date: Nov 2009
Posts: 14
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I did everything you said in the first post, and it works perfectly. There is only one thing I can't figure out.

If I click the links below the button, link1.php for example, it doesn't keep that button selected. It highlights the forum button again.

Is there anyway I can put multiple "yourpage" names in that code so it keeps the button highlighted even when going to a page by clicking a link below the button?

if (THIS_SCRIPT == 'yourpage')

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

NVM fixed it
Reply With Quote
  #71  
Old 12-02-2009, 09:59 PM
oooh em geee oooh em geee is offline
 
Join Date: Nov 2009
Posts: 14
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I fixed the first issue I had, but I have another question. In my images you can see what I mean.

I want the second image, the affiliate one, to show home in front of it as well. Just like in the first image. How can I change that?

Like it says: Home > Frontpage

And the other one only says: Affiliates
Attached Images
File Type: jpg ref1.jpg (19.9 KB, 0 views)
File Type: jpg ref2.jpg (20.1 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 05:14 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.10707 seconds
  • Memory Usage 2,399KB
  • 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
  • (7)bbcode_php
  • (4)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
  • (4)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