PDA

View Full Version : Navbar Tab Addition for CMS Sections - Highlighting


Aaron310012
01-30-2012, 03:48 AM
Hello,

I have created several new Navbar tabs linking to different CMS sections using the solution found here:

https://vborg.vbsupport.ru/showthread.php?t=226914

The tabs work great, but do not highlight when selected. Instead, "Home" remains highlighted.

I've been working with this for a while without any luck. I understand that I must define a condition for the highlighting to work but since these are all CMS section pages THIS_SCRIPT always = 'vbcms' for all of the section pages, so this is not a unique condition. I have also tried to define the URL several different ways using both standard URLs and Friendly URLs without success.

Here is an example of the plugin code I'm trying to use for a "Contact" tab:

$tabselected = '';
$tablinks = '';
if (THIS_SCRIPT == 'Contact')
{
$vbulletin->options['selectednavtab']='Contact';
$tabselected = ' class="content"';
}
$template_hook['navtab_end'] .= '<li'.$tabselected.'><a class="navtab"

href="content.php/102-Contact">Contact</a>'.$tablinks.'</li>' ;


I have also tried to define "THIS_SCRIPT ==" as all variants of the actual URL as well as R= etc.

Does anyone happen to have any advice regarding the proper way to define a unique variable for the section pages of the CMS? Thanks in advance for any input!

Lynne
01-30-2012, 09:32 PM
You need to change the condition for highlighting the Home tab (in the vBulletin CMS product - Navbar: Insert CMS Navbar Entry plugin) to exclude highlighting it under the conditions you want the other tabs to show as highlighted.

Aaron310012
02-02-2012, 02:55 AM
Hello and thanks for the reply!

Could you please give an example of how to access the URL (or RELPATH) from within the plugin? That is the only condition that I can find that differs among the Home tab & the other tabs that I have created. When I attempt it now, the value of RELPATH is blank, so there is no condition that is true on the created tabs but not the Home.

Any help or ideas you give would be greatly appreciated.

Lynne
02-02-2012, 06:44 PM
This is not valid for a content.php page:
if (THIS_SCRIPT == 'Contact')
So, once you find a valid condition, then you will be able to add it to the other condition. It would use $_GET['r'] in the condition.

Aaron310012
02-07-2012, 03:17 AM
Lynne,

I used $_GET['r'] as the unique condition, combined with the Navbar: Insert CMS Navbar Entry suggestion, and everything is working perfectly.

Thanks so much for your help; I really appreciate it! :)

Aaron

Lynne
02-08-2012, 12:51 AM
Glad you got it working. :)

MajinOLesedi
05-08-2012, 02:10 PM
Lynne,

I used $_GET['r'] as the unique condition, combined with the Navbar: Insert CMS Navbar Entry suggestion, and everything is working perfectly.

Thanks so much for your help; I really appreciate it! :)

Aaron

Hello, lol Can you tell me how managed this. Im not too familiar with php yet. Im at the same problem you had. Can you post the code?

Lynne
05-08-2012, 03:37 PM
If you click to view a page in the CMS and look at the URL, you will see something like "r=1-the-front-page". The $_GET['r'] variable is "1-the-front-page". Although it's easier to use intval and just use the number. So, a condition could be:

if (intval($_GET['r']) == x) {
code
}

MajinOLesedi
05-08-2012, 06:36 PM
Ok I get it now but im not too familiar on how I can execute the code that will un-highlight the Home Tab if Im on the News Tab.

This is my custom New Tab plugin
$tabselected = '';
$tablinks = '';
if (intval($_GET['r']))
{
$vbulletin->options['selectednavtab']='News';
$tabselected = ' class="selected"';
$tablinks = ' <ul class="floatcontainer">
<li><a href="/content.php?5-News">Doc</a></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="/content.php?5-News">News</a>'.$tablinks.'</li>' ;


I have this on my Navbar: Insert CMS Navbar Entry plugin
if (defined('CMS_SCRIPT') AND class_exists('vBCms_Navbar'))
{
$vbulletin->options['selectednavtab'] = 'vbcms';
$template_hook['navtab_start'] .= vBCms_NavBar::renderView();
}

if (intval($_GET['r'] == 'r=5-News')) {

}

else
{
if (can_see_cms())
{
$template_hook['navtab_start'] .= vB_Template::create('vbcms_navbar_link')->render();
$template_hook['navbar_getnew_menu_pos1'] .= vB_Template::create('vbcms_navbar_whatsnew_link')->render();
}
}

What code should I execute to have only the current tab to be highlighted?

if (intval($_GET['r'] == 'r=5-News')) {
?
}

Lynne
05-09-2012, 03:02 PM
This is the line you needed to modify to exclude your own condition:

if (defined('CMS_SCRIPT') AND class_exists('vBCms_Navbar'))

to something like:

if (defined('CMS_SCRIPT') AND class_exists('vBCms_Navbar') AND (intval($_GET['r']) != 5))

MajinOLesedi
05-10-2012, 05:49 AM
Thanks it worked