Vbulletin gibt von sich aus eine Menge an Hook Einstiegspunkten vor, doch wenn man eine Textausgabe an einer bestimmten Stelle und nur in einem Template haben möchte, dann sind die vorhandenen Einstiegspunkte irgendwie unbrauchbar.
Die vorgegebenen Hooks sind alle in der Datei hinterlegt:
\vBulletin\core\includes\xml\hooks_vbulletin.xml
Doch was macht man mit einem Hook wie "header_before_content", wenn man nur eine bestimmt Stelle innerhalb eines Templates möchte und nicht global und pauschal "header_before_content" oder "footer_before_body_end"?
Laut Anleitung sollte man ja mit {vb:hook test} innerhalb eines Templates auf den Hook "test" zugreifen können. Allerdings kann man da Namen verwenden wie man lustig ist, im Addon Veriablen deklarieren und per register() oder preregister() registrieren, das bringt letztendlich alles nichts. Dieses "{vb:hook test}" bedeutet (frei gesagt, vielleicht liege ich aber auch falsch) nicht "hier den Hook mit dem Namen test einbinden", sondern "Hier ist der Einstiegspunkt mit dem Namen test". Es holt sich also nicht das Template an der Stelle die Daten vom Addon ist bindet sie ein, sondern das Addon nistet sich an der Stelle ein und zeigt die Daten an. Das ist also genau der umgekehrte Weg.
Legt man im ACP ein neues Addon und dann einen neuen Hook an, dann wird man ja nach dem Einstiegspunkt gefragt und muss dieses auch auswählen. Nur die dortige Auswahl der Einstiegspunkte ist eben von vBulletin vorgegeben und lässt sich mit {vb:hook test} nicht beeinflussen.
So, was aber bringt das dann überhaupt? Wie kommt man dennoch ans Ziel: Da gibt es wahrscheinlich zig Möglichkeiten. Keine Ahnung, ob mein Weg nun so überhaupt gedacht ist, aber er funktioniert zumindest.
Dazu legt man im Addon, im Unterordner XML, einfach eine Datei an, die mit "hooks_" beginnt, dann den eindeutigen Namen des Add-Ons enthält und mit ".xml" endet, also z.B. hooks_helloworld.xml
Darin werden dann die eigenen Einstiegspunkte festgelegt:
<?xml version="1.0" encoding="ISO-8859-1"?>
<hooks>
<hooktype type="helloworld">
<hook>helloworld_hook_1</hook>
<hook>helloworld_hook_2</hook>
<hook>helloworld_hook_3</hook>
</hooktype>
</hooks>
Somit gibt es hier also einen neuen Block namens "helloworld", der dann die drei hier festgelegten Hook Einstiegspunkte enthält. Wird das Addon aktiviert, dann sind diese Einstiegspunkte in der Auswahlliste, können dem Hook zugewiesen werden und können auch im Template mit z.B. {vb:hook helloworld_hook_1} verwendet werden!