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
  #282  
Old 05-20-2010, 03:27 AM
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 if it would be easier to manage. On my site, I only want to add one or two more tabs and so it's no problem for me to do it the way everything is currently set up. I find it pretty simple the way it is, so I've never looked into an 'easier' method.
Reply With Quote
  #283  
Old 05-24-2010, 09:12 PM
Lynk Lynk is offline
 
Join Date: Aug 2009
Posts: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Now that I've gone through all of the work, I hope this helps someone on here. A while back, I created two new tabs (Home and Groups) over at http://www.drzforums.com, and just replicated the navlinks from the Forums navtab. The result was a set of broken links for visitors, since some of the navlinks require registration.

Today, I converted the navlinks conditional statements from the vB-specific HTML found in navheader, into the PHP required for a plug-in. Here is the plug-in code for my Groups tab:

PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'group')
{
    
$vbulletin->options['selectednavtab']='navtablabel_groups';
    
$tabselected ' class="selected"';
    
$tablinks '<ul class="floatcontainer">'.$template_hook['navbar_start'];

    if (
$show['searchbuttons']) {
        if (
$show['member'])
            
$tablinks .= '<li><a href="search.php?'.$session['sessionurl'].'do=getnew&amp;contenttype=vBForum_Post">'.$vbphrase['new_posts_nav'].'</a></li>';
        else
            
$tablinks .= '<li><a href="search.php?'.$session['sessionurl'].'do=getdaily&amp;contenttype=vBForum_Post">'.$vbphrase['todays_posts'].'</a></li>';
    }

    
$tablinks .= $template_hook['navbar_after_getnew'];

    if (
$show['pmmainlink'])
        
$tablinks .= '<li><a href="private.php'.$session['sessionurl_q'].'" rel="nofollow">'.$vbphrase['private_messages'].'</a></li>';

    
$tablinks .= $template_hook['navbar_after_pm'].'<li><a rel="help" href="faq.php'.$session['sessionurl_q'].'" accesskey="5">'.$vbphrase['faq'].'</a></li>'.$template_hook['navbar_after_faq'].'<li><a href="calendar.php'.$session['sessionurl_q'].'">'.$vbphrase['calendar'].'</a></li>'.$template_hook['navbar_after_calendar'].'<li class="popupmenu"><a href="javascript://" class="popupctrl" accesskey="6">'.$vbphrase['community'].'</a><ul class="popupbody popuphover">'.$template_hook['navbar_community_menu_start'];

    if (
$show['quick_links_groups'])
        
$tablinks .= '<li><a href="group.php'.$session['sessionurl_q'].'">'.$vbphrase['social_groups'].'</a></li>';

    if (
$show['quick_links_albums'])
        
$tablinks .= '<li><a href="album.php'.$session['sessionurl_q'].'">'.$vbphrase['pictures_and_albums'].'</a></li>';

    if (
$bbuserinfo['userid']) {
        
$tablinks .= '<li><a href="profile.php?'.$session['sessionurl'].'do=buddylist">';

        if (
$show['friends_and_contacts'])
            
$tablinks .= $vbphrase['contacts_and_friends'];
        else
            
$tablinks .= $vbphrase['contacts'];

        
$tablinks .= '</a></li>';
    }

    if (
$show['memberslist'])
        
$tablinks .= '<li><a href="memberlist.php'.$session['sessionurl_q'].'">'.$vbphrase['members_list'].'</a></li>';

    
$tablinks .= $template_hook['navbar_community_menu_end'].'</ul></li>'.$template_hook['navbar_after_community'].'<li class="popupmenu"><a href="javascript://" class="popupctrl">'.$vbphrase['forum_actions'].'</a><ul class="popupbody popuphover"><li><a href="forumdisplay.php?'.$session['sessionurl'].'do=markread">'.$vbphrase['mark_forums_read'].'</a></li>';

    if (
$show['member'])
        
$tablinks .= '<li><a href="profile.php?'.$session['sessionurl'].'do=editoptions">'.$vbphrase['edit_options'].'</a></li><li><a href="profile.php?'.$session['sessionurl'].'do=editprofile">'.$vbphrase['edit_your_details'].'</a></li>';

    
$tablinks .= '</ul></li><li class="popupmenu"><a href="javascript://" class="popupctrl" accesskey="3">'.$vbphrase['quick_links'].'</a><ul class="popupbody popuphover">';

    if (
$show['member']) {

        if (
$show['member'])
            
$tablinks .= '<li><a href="subscription.php'.$session['sessionurl_q'].'" rel="nofollow">'.$vbphrase['subscribed_threads'].'</a></li>';

        
$tablinks .= '<li><a href="javascript://" onclick="window.open(getBaseUrl() + \'misc.php?'.$session['sessionurl'].'do=buddylist&amp;focus=1\',\'buddylist\',\'statusbar=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,width=250,height=300\'); return false;">'.$vbphrase['open_contacts'].'</a></li>';

        if (
$vboptions['forumleaders']) {
            
$tablinks .= '<li><a href="showgroups.php'.$session['sessionurl_q'].'" rel="nofollow">';

            if (
$vb_suite_installed)
                
$tablinks .= $vbphrase['view_site_leaders'];
            else
                
$tablinks .= $vbphrase['view_forum_leaders'];

            
$tablinks .= '</a></li>';

        }

    }

    
$tablinks .= $template_hook['navbar_quick_links_menu_pos1'].$template_hook['navbar_quick_links_menu_pos2'].$template_hook['navbar_quick_links_menu_pos3'];

    if (
$show['wollink'])
        
$tablinks .= '<li><a href="online.php'.$session['sessionurl_q'].'">'.$vbphrase['whos_online'].'</a></li>';

    
$tablinks .= $template_hook['navbar_quick_links_menu_pos4'].'</ul></li>'.$template_hook['navbar_end'].'</ul></li>';


$template_hook['navtab_middle'] .= '<li'.$tabselected.'><a class="navtab" href="group.php">Groups</a>'.$tablinks.'</li>' 
Enjoy!
Reply With Quote
  #284  
Old 05-27-2010, 02:16 AM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

how do you check permissions at that hook?

$cando = $permissions['myproduct'] & $vbulletin->bf_ugp['myproduct']['cando'] ? true : false;

is not doing anything.

edit ... found answer in blogs
Reply With Quote
  #285  
Old 05-27-2010, 08:11 AM
GriZzm0 GriZzm0 is offline
 
Join Date: Apr 2006
Location: Sweden, Helsingborg
Posts: 42
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks. Using this for one of my subforums (kind of like the tabs here at vB.org). However, instead of forumdisplay.php?{vb:raw session.sessionurl}2-Main-Forum I would like to generate 2-Main-Forum using the vBulletin link generator so it takes the current rewrite rules into consideration. Any ideas how I would do that?
Reply With Quote
  #286  
Old 06-01-2010, 09:55 PM
Hippy's Avatar
Hippy Hippy is offline
 
Join Date: Dec 2001
Location: USA, New Jersey
Posts: 2,392
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Lynne can this be used to make a simple navtab with out the drop down and sub links in the lower navbar ?

thanks
Reply With Quote
  #287  
Old 06-02-2010, 03:48 AM
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 Hippy View Post
Lynne can this be used to make a simple navtab with out the drop down and sub links in the lower navbar ?

thanks
I would guess you could leave the submenu (and thus dropdown) out of it.
Reply With Quote
  #288  
Old 06-02-2010, 08:49 PM
Hippy's Avatar
Hippy Hippy is offline
 
Join Date: Dec 2001
Location: USA, New Jersey
Posts: 2,392
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thanks
Reply With Quote
  #289  
Old 06-04-2010, 04:14 PM
AfterWorldForum AfterWorldForum is offline
 
Join Date: Dec 2008
Posts: 154
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I cannot seem to get the plugin to accept a userid in the menu. I'm probably overlooking something obvious, but here's my code:

Code:
$tablinks .= '<li><a href="tracker.php?'. $session['sessionurl'] . '&do=search&userid=' . 
$bbuserinfo['userid'] . '">
In the page defined in the plugin (tracker), I do have the line to include the vB stuff:

Code:
require_once('./global.php');
I tried putting an if ($bbuserinfo[userid]) block around the statement above, but that doesn't show any links. I even tried adding a $vbulletin->bbuserinfo in front of it, but again, no luck.

Any ideas what I might be doing wrong or overlooking?

Thanks
Reply With Quote
  #290  
Old 06-04-2010, 05:12 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try

Code:
$tablinks .= '<li><a href="tracker.php?'. $session['sessionurl'] . '&do=search&userid=' .$vbulletin->userinfo[userid]. '">
Reply With Quote
  #291  
Old 06-04-2010, 06:22 PM
AfterWorldForum AfterWorldForum is offline
 
Join Date: Dec 2008
Posts: 154
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
Try

Code:
$tablinks .= '<li><a href="tracker.php?'. $session['sessionurl'] . '&do=search&userid=' .$vbulletin->userinfo[userid]. '">
You are wise in the ways of plugins, Lynne Much obliged :hattip:
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 03:37 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.05083 seconds
  • Memory Usage 2,408KB
  • 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
  • (4)bbcode_code
  • (5)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
  • (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