vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=251)
-   -   Need to add a menu to the subnav with a plugin (https://vborg.vbsupport.ru/showthread.php?t=231608)

steven s 12-29-2009 10:28 PM

Need to add a menu to the subnav with a plugin
 
I'm looking to add a dropdown at the beginning of the subnav in the forum and CMS.
Probably the blog too. I have the html.

For the navbar I need to enter it in two places, one for those registered and one for guests.
It will be the first item in the bar.
Same in the CMS and blog.

I can hard code it all with no problem, but need to remember if I make a change in 1 place, I need to change it in 3 or places.

In vB3 I created a plugin that stored a variable.
The variable $mymenu in this case would be the html.
Then I'd hardcode $mymenu where I needed it and edit the plugin when necessary.

Another way I used to edit templates was find and replace.

I don't understand how to do it in vB4.
I've read a couple articles on how to use the new variables.
I just don't understand it.

Perhaps I can make a plugin that stores the html as in vB3?, I still don't understand how to use that variable in a template.

Any advice?

Lynne 12-29-2009 11:08 PM

You can probably write the plugin and have the contents in a variable, $mymenu, just like before and then preregister the variable for use in the navbar. That should be no problem. I think the blog and cms also use templates for the link, so you'd have to preregister it for them also. Then you'd have to edit the templates to add the variable.

PHP Code:

vB_Template::preRegister('navbar', array('mymenu' => $mymenu)); 


steven s 12-29-2009 11:39 PM

I'm thinking then my plugin would need to be
Hook: process_templates_complete
PHP Code:

vB_Template::preRegister('navbar', array('mymenu' => $mymenu)); 
$mymenu='menu will go here'

Placing $mymenu in the navbar template just displays $mymenu. :(

Lynne 12-30-2009 02:47 AM

You don't use $mymenu anymore - you need to use the new syntax. The new syntax is {vb:raw mymenu} . Check the functions.php page where the navbar is rendered and make sure your hook is located *before* that.

steven s 12-30-2009 10:27 PM

Quote:

Originally Posted by Lynne (Post 1942116)
You don't use $mymenu anymore - you need to use the new syntax. The new syntax is {vb:raw mymenu} . Check the functions.php page where the navbar is rendered and make sure your hook is located *before* that.

Thanks,
You would think the hook should be navbits_complete, if I am reading this correctly.

PHP Code:

    ($hook vBulletinHook::fetch_hook('navbits_complete')) ? eval($hook) : false;

    return 
$code;
}

/**
* Renders the navbar template with the specified navbits
*
* @param    array    Array of navbit information
*
* @return    string    Navbar HTML
*/
function render_navbar_template($navbits)
{
    global 
$vbulletin;

    
$templater vB_Template::create('navbar');

    
// Resolve the root segment
    
$templater->register('bbmenu'$vbulletin->options['bbmenu']);

    
$templater->register('ad_location'$GLOBALS['ad_location']);
    
$templater->register('foruminfo'$GLOBALS['foruminfo']);
    
$templater->register('navbar_reloadurl'$GLOBALS['navbar_reloadurl']);
    
$templater->register('navbits'$navbits);
    
$templater->register('notices'$GLOBALS['notices']);
    
$templater->register('notifications_menubits'$GLOBALS['notifications_menubits']);
    
$templater->register('notifications_total'$GLOBALS['notifications_total']);
    
$templater->register('pmbox'$GLOBALS['pmbox']);
    
$templater->register('return_link'$GLOBALS['return_link']);
    
$templater->register('template_hook'$GLOBALS['template_hook']);

    return 
$templater->render();


I'm missing something simple.

Lynne 12-30-2009 10:36 PM

No, you aren't reading that correctly. That is a function. It gets called from somewhere and that is where you would look backwards from.

steven s 12-30-2009 11:17 PM

Looking at your tab, I realize that I had this reversed. It should be
PHP Code:

$mymenu=' html here';
vB_Template::preRegister('navbar', array('mymenu' => $mymenu)); 

Still don't understand the hooks since navbit_complete and some other hooks seem to work.

But thanks! I'm on my way.

Lynne 12-30-2009 11:23 PM

If it works, great! I could be that the hook is called right before the function is called (but it isn't obvious in the code you posted).

steven s 12-31-2009 12:35 AM

Now I'm trying to use the same plugin in the CMS subnav.
Am I able to preRegister twice within the same plugin?
I changed the variable to chapterprograms.
PHP Code:

vB_Template::preRegister('navbar', array('chapterprograms' => $chapterprograms));
vB_Template::preRegister('vbcms_navbar_link', array('chapterprograms' => $chapterprograms)); 


Lynne 12-31-2009 02:22 AM

Sure, you can preregister a variable for a couple of templates in one plugin. You just need to make sure it is the proper plugin to use for each of those templates.


All times are GMT. The time now is 04:59 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01082 seconds
  • Memory Usage 1,754KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (5)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete