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
  #302  
Old 07-03-2010, 03:37 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 Wormy! View Post
Hi Lynne

Heres my code:

Code:
$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'home_tab')
{
    $vbulletin->options['selectednavtab']='home_tab';
    $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_start'] .= '<li'.$tabselected.'><a class="navtab" href="http://www.technologyatplay.com">Home</a>'.$tablinks.'</li>' ;
Appreciate your help!
And you defined THIS_SCRIPT to be "home_tab" where? That is not a default definition, so you would have needed to actually go define it manually somehow. If you are trying to do the content.php page, then if you look at the top of that page, you will see that THIS_SCRIPT is defined as "vbcms", not "home_tab".
Reply With Quote
  #303  
Old 07-03-2010, 09:41 PM
Wormy! Wormy! is offline
 
Join Date: Oct 2008
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm going to sound slow here... but you've kind of lost me

I am using vBadvanced CMPS. I'm not exectly sure where I get the specific details for "THIS_SCRIPT"

I've looked in the page sourece code and I can't identify anything that looks like how the page is defined?

Sorry for my slow uptake on this... I doo aprreciate your help!

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

Bingo!! Got it!!

Doh! I edited the main index page and found the "THIS_SCRIPT" and we are off and running

Seriously... thanks SO much for your help!!!

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

Hi Lynne

Just a quick query... now that i have that in place, is there any way of getting the default forum settings to appear 'under' the Nav?

ie: * New Posts
* Private Messages
* FAQ
* Calendar
* Community
o Groups
o My Albums
o Friends & Contacts
o Member List
* Forum Actions
o Mark Forums Read
o General Settings
o Edit Profile
* Quick Links
o Subscribed Threads
o Open Contacts Popup
o View Forum Leaders
o Who's Online

Cheers

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

Another self answered question... I just recreate my own within your code!! Doh!

All done
Reply With Quote
  #304  
Old 07-16-2010, 12:31 PM
Rebecca217 Rebecca217 is offline
 
Join Date: May 2002
Posts: 84
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This worked great for me. Thank you!
Reply With Quote
  #305  
Old 08-11-2010, 01:18 AM
Lostboyfan's Avatar
Lostboyfan Lostboyfan is offline
 
Join Date: Mar 2010
Location: Chicago, IL
Posts: 73
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I was wondering? Is it possible for this tab to go in front of the forum tab. I'm going to call it "Home" and link it with my vbadvanced page.

If anyone can help please write back soon.
Reply With Quote
  #306  
Old 08-11-2010, 01:34 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 Lostboyfan View Post
I was wondering? Is it possible for this tab to go in front of the forum tab. I'm going to call it "Home" and link it with my vbadvanced page.

If anyone can help please write back soon.
As I wrote in the article:
Quote:
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.
You may also change the execution order if needed if two tabs are using the same hook and you want one to go before the other.
Reply With Quote
  #307  
Old 08-11-2010, 03:27 AM
Lostboyfan's Avatar
Lostboyfan Lostboyfan is offline
 
Join Date: Mar 2010
Location: Chicago, IL
Posts: 73
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
As I wrote in the article:

You may also change the execution order if needed if two tabs are using the same hook and you want one to go before the other.
Ok thank you. It worked. Must of missed that part.
Reply With Quote
  #308  
Old 08-11-2010, 11:52 AM
Tahooma Tahooma is offline
 
Join Date: Aug 2010
Posts: 51
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If someone is using this and has the problem that the Homepage is selected, i modiefied the first line of vbcms_navbar_link to
PHP Code:
<vb:if condition="$vboptions['selectednavtab'] == 'vbcms' AND !in_array($_GET['r'], array(60))"
Where 60 is the section id (e.g. content.php?60)

Hope this works for you

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

Only one more question:
I have new NavTabs to Content Sections (e.g. content?=60) called News.
Below that i have sub-nav links to content?=61 "Sports", content?=62 "Travel",...

Now all this works fine, all are displayed and you can follow the link.
Only problem is:


If i hit one of the subNavs, "News" loses the Highligthing (Selection) and none of the Navbar is selected.
Is there a way to have News Selected when using one of its sublinks ?

OK
Got it myself

PHP Code:
$tabselected '';
$tablinks '';

if (((
$_GET['r'] == 67) || ($_GET['r'] == 68) || ($_GET['r'] == 70))&& (THIS_SCRIPT == 'vbcms'))
{
    
$vbulletin->options['selectednavtab']='content.php?r=67';
    
$tabselected ' class="selected"';
    
$tablinks '                <ul class="floatcontainer">
                        <li><a href="content.php?r=68">Fotos</a></li>
                        <li><a href="content.php?r=70">Videos</a></li>
                </ul> '

This works well, just add the sub navs into your If. v 4.0.5


Thanks in advance
Reply With Quote
  #309  
Old 08-13-2010, 05:40 PM
pedrossi's Avatar
pedrossi pedrossi is offline
 
Join Date: Mar 2010
Posts: 30
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Lynne,

First of all thanks for all the help and the great article. Is there a way to create a new tab that links to the user's profile? For example the tab would be called "My Profile" and when the user clicks on it, it would take him to his profile as seen in member.php. On my forum, my user ID is "1", so the link would be www.myforum.com/member.php?1. But how do I do that through the plugin code? That is, how do I write a condition that only lets that tab show if the user is logged in, and to customize the link to be different for each user?

I know that the vb command
Code:
{vb:link member, {vb:raw bbuserinfo}}
generates the user-ID and username, and adding the output of that after member.php? takes me to the profile. But I tried doing something like this:
Code:
<a href="member.php?{vb:link member, {vb:raw bbuserinfo}}">
yet it didn't work.

Thanks!
Reply With Quote
  #310  
Old 08-13-2010, 05:57 PM
cellarius's Avatar
cellarius cellarius is offline
 
Join Date: Aug 2005
Posts: 1,987
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No need for the member.php? in front of the variable - it contains the complete link, including the path and file.

Just try
Code:
<a href="{vb:link member, {vb:raw bbuserinfo}}">{vb:rawphrase your_profile}</a>
Reply With Quote
  #311  
Old 08-13-2010, 07:42 PM
pedrossi's Avatar
pedrossi pedrossi is offline
 
Join Date: Mar 2010
Posts: 30
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by cellarius View Post
No need for the member.php? in front of the variable - it contains the complete link, including the path and file.

Just try
Code:
<a href="{vb:link member, {vb:raw bbuserinfo}}">{vb:rawphrase your_profile}</a>
When I tried to implement this code into the plugin code Lynne provided, it seems vBulletin isn't 'parsing' (is this the right term?) the code. So what I end up with is a tab called {vb:rawphrase your_profile}, and instead of taking me to
Code:
http://myforum.com/member.php?1-username
it takes me to
Code:
http://myforum.com/{vb:link member, {vb:raw bbuserinfo}}
. Any ideas on how to get vBulletin to parse the {vb} tags inside a plugin?

Thanks!
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 06:00 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.06279 seconds
  • Memory Usage 2,374KB
  • 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
  • (7)bbcode_code
  • (6)bbcode_php
  • (5)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