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
  #492  
Old 12-11-2011, 10:39 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Have you tried spitting out $_SERVER['REQUEST_URI'] on the page to verify you have it set correctly for the page? It may be different than in that example based on the type of Friendly URLs you are using.

And did you make the change to the plugin also?
Reply With Quote
  #493  
Old 12-11-2011, 11:00 PM
gm139 gm139 is offline
 
Join Date: Nov 2011
Posts: 7
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
Have you tried spitting out $_SERVER['REQUEST_URI'] on the page to verify you have it set correctly for the page? It may be different than in that example based on the type of Friendly URLs you are using.

And did you make the change to the plugin also?
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] ---------------

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.
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.
Reply With Quote
  #494  
Old 12-18-2011, 03:01 PM
intruder intruder is offline
 
Join Date: Oct 2006
Posts: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

UP, it would be great to have something like

Code:
$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'test' OR in_array($GLOBALS['forumid'], array(58, 59, 60, 56)))
for the cms also.

THIS_SCRIPT == 'test' -> vbcmspage
forum.id -> section.id

Any ideeas?
Reply With Quote
  #495  
Old 01-21-2012, 11:15 PM
malinghi malinghi is offline
 
Join Date: May 2011
Posts: 12
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Forgive me if someone asked this, but I didn't see anything like this in the comments. I want a tab on the navbar to randomly link to one of a couple dozen websites. I found code to do this with javascript or with php, and the code works fine, but I can't figure out how to incorporate it into the code for the tab.

Here's one of the codes I found for making a random link:

PHP Code:
$links = array("link 1""link 2""link 3");
$max sizeof($links);
$rand rand(0$max);
echo (
"<a href = "$links[$rand]">Click Here for a Random Link</a>"); 
I've tried to just insert something after href=, like $links[$rand], or echo($links[$rand]), or print($links[$rand]), into the last line of the code for the plugin but then the navbar link just takes me to www.mywebsite.com/$links[$rand].
PHP Code:
<class="navtabhref=$links[$rand]>Nav Link</a>'.$tablinks.'</li>' ; 
I've considered using the random number generator to send it to a bunch of if statements with each one having the last line from your code but with a different url, but I was worried that having dozens of if statements get evaluated every time someone loads a page on my site might slow it down or be bad for it or something.
Reply With Quote
  #496  
Old 01-22-2012, 12:08 AM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It would need to be something like this:
PHP Code:
<class="navtabhref="'.$links[$rand].'" >Nav Link</a>'.$tablinks.'</li> ; 
Reply With Quote
  #497  
Old 01-22-2012, 09:36 AM
malinghi malinghi is offline
 
Join Date: May 2011
Posts: 12
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm not sure why, but it didn't work. This is the full version of the last line, just to make sure I inserted the code correctly:

PHP Code:
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href=$links[$rand]>Nav Link</a>'.$tablinks.'</li> ; 
And the error I get is:


Code:
Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /home/mernet/public_html/index/includes/class_bootstrap.php(555) : eval()'d code on line 62

Parse error: syntax error, unexpected '<' in /home/mernet/public_html/index/includes/class_bootstrap.php(555) : eval()'d code on line 62
Reply With Quote
  #498  
Old 01-22-2012, 11:54 AM
TheSupportForum TheSupportForum is offline
 
Join Date: Jan 2007
Posts: 1,158
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by malinghi View Post
I'm not sure why, but it didn't work. This is the full version of the last line, just to make sure I inserted the code correctly:

PHP Code:
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab" href=$links[$rand]>Nav Link</a>'.$tablinks.'</li> ; 
And the error I get is:


Code:
Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /home/mernet/public_html/index/includes/class_bootstrap.php(555) : eval()'d code on line 62

Parse error: syntax error, unexpected '<' in /home/mernet/public_html/index/includes/class_bootstrap.php(555) : eval()'d code on line 62
asuming you are using a plugin for this try this

Code:
	 $template_hook['navtab_end'] .= ('<li'.$tabselected.'><a class="navtab" href=$links[$rand]>Nav Link</a>'.$tablinks.</li>');
Reply With Quote
  #499  
Old 01-22-2012, 02:28 PM
malinghi malinghi is offline
 
Join Date: May 2011
Posts: 12
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Simonhind, I just tried the code you suggested. It didn't give the "Warning: Unexpected character in input" error, but it did still give the parse error about the '<' bracket. Here's the full error message.

Code:
Parse error: syntax error, unexpected '<' in /home/mernet/public_html/index/includes/class_bootstrap.php(555) : eval()'d code on line 62
Reply With Quote
  #500  
Old 01-24-2012, 02:25 AM
leftanalog leftanalog is offline
 
Join Date: May 2011
Posts: 34
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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?
Reply With Quote
  #501  
Old 01-24-2012, 09:17 AM
TheSupportForum TheSupportForum is offline
 
Join Date: Jan 2007
Posts: 1,158
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

does anyone know the css to increase the height of the tabs

------
edit : found the styvar, now thats looking better

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

Quote:
Originally Posted by malinghi View Post
Simonhind, I just tried the code you suggested. It didn't give the "Warning: Unexpected character in input" error, but it did still give the parse error about the '<' bracket. Here's the full error message.

Code:
Parse error: syntax error, unexpected '<' in /home/mernet/public_html/index/includes/class_bootstrap.php(555) : eval()'d code on line 62
can you provide the full plugin code, either here or via PM and i'll take a proper look
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 06:31 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.05275 seconds
  • Memory Usage 2,383KB
  • 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
  • (8)bbcode_code
  • (9)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
  • (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