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
  #92  
Old 12-17-2009, 11:47 AM
AndrewSpearin AndrewSpearin is offline
 
Join Date: Dec 2009
Location: Toronto
Posts: 9
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I noticed someone else attempting to have the plugin work for multiple pages, they solved it but didn't share how they did so.

I am also attempting to have the same tab be highlighted for multiple pages (the ones linked in the navbar when you click on the tab), but can't seem to figure it out.

Any help would be much appreciated!

http://www.npac.ca/2010
Reply With Quote
  #93  
Old 12-17-2009, 03:23 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 I.am View Post
This is what i use

PHP Code:
$tabselected '';
$tablinks '';
if (
THIS_SCRIPT == 'Downloads')
{..... 
But when the page is selected the button doesn't work properly.
Is that condition valid? Do you have a line at the top of your downloads page that defines THIS_SCRIPT as "Downloads" (must use exact word - if capitalized in the php, then it must be capitalized in the condition).

Quote:
Originally Posted by AndrewSpearin View Post
I noticed someone else attempting to have the plugin work for multiple pages, they solved it but didn't share how they did so.

I am also attempting to have the same tab be highlighted for multiple pages (the ones linked in the navbar when you click on the tab), but can't seem to figure it out.

Any help would be much appreciated!

http://www.npac.ca/2010
And are you conditions valid to make those tabs active?
Reply With Quote
  #94  
Old 12-17-2009, 06:40 PM
AndrewSpearin AndrewSpearin is offline
 
Join Date: Dec 2009
Location: Toronto
Posts: 9
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Oh actually they are not all set up just yet. It works as it should for 'Contests' - however I want Contests to remain highlighted when on the pages within that section.

From: http://npac.ca/2010/contests.php

Contests -> NPOY 2009 -> Information & Rules

Takes you to: http://npac.ca/2010/poy2009.php

Above is where I am working on first, and trying to figure out how to get it working for that page before moving on to the rest (which still need to be created).

This is my first time working with vBulletin, so am still getting used to conditions. I'm more of a designer than developer, but do have a firm understanding when it comes to the code.
Reply With Quote
  #95  
Old 12-17-2009, 07:45 PM
I.am I.am is offline
 
Join Date: Mar 2009
Posts: 84
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
Is that condition valid? Do you have a line at the top of your downloads page that defines THIS_SCRIPT as "Downloads" (must use exact word - if capitalized in the php, then it must be capitalized in the condition).


And are you conditions valid to make those tabs active?
This is not a custom page, but it is a section of my community that i wat to show on navbar_tab.
Reply With Quote
  #96  
Old 12-17-2009, 09:20 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 AndrewSpearin View Post
Oh actually they are not all set up just yet. It works as it should for 'Contests' - however I want Contests to remain highlighted when on the pages within that section.

From: http://npac.ca/2010/contests.php

Contests -> NPOY 2009 -> Information & Rules

Takes you to: http://npac.ca/2010/poy2009.php

Above is where I am working on first, and trying to figure out how to get it working for that page before moving on to the rest (which still need to be created).

This is my first time working with vBulletin, so am still getting used to conditions. I'm more of a designer than developer, but do have a firm understanding when it comes to the code.
Then is sounds more like you should have a longer condition: if on Contests page or on poy2009 page or on xxxxx page. So, you could define THIS_SCRIPT at the top of each of those pages so you can use them in the condition:
PHP Code:
if (in_array(THIS_SCRIPT, array('contests''poy2009''xxxxx'))) 
You will NEED to define THIS_SCRIPT at the top of all those pages!!!!
PHP Code:
define('THIS_SCRIPT''xxxxx'); 
Quote:
Originally Posted by I.am View Post
This is not a custom page, but it is a section of my community that i wat to show on navbar_tab.
Then you need to have a condition written to make that tab show for that section. I cannot help you with that as I am not that familiar with the CMS yet.
Reply With Quote
  #97  
Old 12-18-2009, 05:52 AM
chsmith700 chsmith700 is offline
 
Join Date: Jun 2007
Posts: 24
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Lynne,

I am trying to set up a tab, and link it to a forum, basically a section kind like how Vbulletin.org has it. However, when I try to set an array on forums inside the sub, it wont highlight.

Here is my condition I have set.

Code:
if (in_array($forum['forumid'], array(13,22)))
--------------- Added [DATE]1261123033[/DATE] at [TIME]1261123033[/TIME] ---------------

Nevermind...lol figured it out.

If anyone else needs this the code is:
Code:
if (in_array($foruminfo['forumid'], array(13,22,35,19,24,59,60,93,94,36,61,62,21)))
Reply With Quote
  #98  
Old 12-18-2009, 02:09 PM
AndrewSpearin AndrewSpearin is offline
 
Join Date: Dec 2009
Location: Toronto
Posts: 9
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Lynne,

That condition you wrote did not work, but I found a simpler solution:

I simply defined THIS_SCRIPT as 'contests' in poy2009.php

Not sure if that will cause any conflicting problems, but it seems to be working fine.
Reply With Quote
  #99  
Old 12-27-2009, 05:57 PM
MaryTheG(r)eek MaryTheG(r)eek is offline
 
Join Date: Sep 2006
Location: Greece
Posts: 1,340
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lionel View Post
I looked but did not find the answer. How do you add a phrase in this code for Sublink 1?

<li><a href="sublink1.php">SubLink 1</a></li>

I tried ' . $vbphrase['my_phrase'] .'
I tried {vb:rawphrase my_phrase}

never mind ... I needed to globalize it
Try the first without ' ' in phrase. eg ' . $vbphrase[my_phrase] .'

Maria
Reply With Quote
  #100  
Old 12-27-2009, 06:18 PM
Lionel Lionel is offline
 
Join Date: Dec 2001
Location: Delray Beach, Florida
Posts: 3,277
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MicroHellas View Post
Try the first without ' ' in phrase. eg ' . $vbphrase[my_phrase] .'

Maria
Hi,

Actually I had to

Quote:
global $vbphrase;
Reply With Quote
  #101  
Old 12-29-2009, 12:17 PM
Kinneas's Avatar
Kinneas Kinneas is offline
 
Join Date: Dec 2005
Location: Nottingham, UK
Posts: 282
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you Lynne, this is extremely helpful
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:30 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.08217 seconds
  • Memory Usage 2,376KB
  • 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
  • (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
  • (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