PDA

View Full Version : custom hook - hooks_custom.xml - how to reference?


Rik Brown
03-14-2007, 12:59 AM
I need to create a custom hook to move the location of a 3rd party hack. So that the hook won't get overwritten in any future vb upgrade, I created a file named hooks_custom.xml in the forums/includes/xml directory. I've created a plugin named TEST that simply has a one-line php echo statement for testing purposes and I've been able to assign that plugin via the following dropdown menu:

Plugin Manager > Product : vBulletin > TEST > Hook Location ...

... to a new hook location named "left_column_top". So the hooks_custom.xml file is being read correctly.

However, I'm not sure how to reference the hook in the template in which we are placing it. Other messages about hooks show a reference such as:

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

... which doesn't work.

Would "vBulletinHook" need to changed to something like "customhooks" (I've tried several variation of that)?

Anyone know what I'm doing wrong?

Thanks. -- Rik

Zachariah
03-25-2007, 02:45 PM
<hooks> - anything between this tag and </hooks> will be included in the drop down

<hooktype type="name"> - The name of your hook group, you should group all common hooks under a group so you can find them quickly. Make sure you don't use a name already used by a default hooktype.

<hook> - The name of your hook, this must be the same as the hook's name in the php code


XML file:
<?xml version="1.0" encoding="ISO-8859-1"?>

<hooks>

<hooktype type="Test">
<hook>left_custom_top</hook>
<hook>right_custom_top</hook>
<hook>top_custom_top</hook>
<hook>bottom_custom_top</hook>
</hooktype>


</hooks>



I am assuming that you are working in a PHP file that includes /forums/includes/global.php.

PHP
($hook = vBulletinHook::fetch_hook('left_custom_top')) ? eval($hook) : false;
($hook = vBulletinHook::fetch_hook('right_custom_top')) ? eval($hook) : false;
($hook = vBulletinHook::fetch_hook('top_custom_top')) ? eval($hook) : false;
($hook = vBulletinHook::fetch_hook('bottom_custom_top')) ? eval($hook) : false;

Marco van Herwaarden
03-25-2007, 08:06 PM
However, I'm not sure how to reference the hook in the template in which we are placing it. Other messages about hooks show a reference such as:

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


You can not place PHP code in a template.

Rik Brown
03-26-2007, 02:20 AM
Zachariah & Marco:

I'll give it a try again. Thanks for your comments and help. -- Rik