Créer ses propres hooks ======================= Hooks utilisateur ----------------- Il est possible de définir ses propres noms de hooks et de les appeler dans les thèmes. Nous connaissons déjà la liste des hooks réservés au fonctionnement de PluXml, mais il est tout à fait possible de définir ses propres hooks. Voyons le cas suivant : nous souhaitons définir un hook qui agira dans le fichier ``sidebar.php`` du dossier ``theme``. Nous appellerons ce hook ``SidebarTest`` afin de respecter la nomenclature des noms des hooks. Commençons par écrire notre plugin : .. code::php addHook('SidebarTest', 'SidebarTest'); } public function SidebarTest() { echo $this->var; } } ?> Nous retrouvons ici tous les composants décris dans les paragraphes précédents. Il s’agit ici d’afficher uniquement le message "Hook de la sidebar", message définit dans la variable $var. Modifions maintenant le fichier ``sidebar.php`` du thème afin de placer l’appel de notre hook. .. code:: php Nous utilisons ici la fonction ``callHook`` de ``$plxShow`` en passant en paramètre le nom du hook à traiter. Passage de paramètres à un hook ------------------------------- Un hook peut être appelé en lui passant un ou plusieurs paramètres. Exemple : .. code:: php callHook('MyHook', 'param1')) ?> Pour appeler un hook avec plusieurs paramètres, il faut les passer sous forme de tableau. ..code:: php callHook('MyHook', array('param1', 'param2'))) ?> Déclaration du hook recevant les paramètres ------------------------------------------- Soit le hook ``MyHook`` appelé avec 2 paramètres valant chacun ``azerty`` et ``qwerty`` : .. code:: php callHook('MyHook', array('azerty', 'qwerty'))) ?> addHook('MyHook', 'MyHookFunction'); } public function MyHookFunction($params) { echo $param[0]; echo $param[1]; } } ?> Lorsque le hook ``MyHook`` est appelé, la fonction ``MyHookFunction`` est exécutée. Le paramètre ``$params`` de la fonction ``MyHookFunction`` reçoit les deux paramètres sous forme de tableau. Ainsi ``$params[0]`` contient la valeur ``azerty`` et ``$param[1]`` la valeur ``qwerty`` Le hook MyHook affiche : azerty qwerty Valeur de retour d'un hook -------------------------- Un hook peut retourner une valeur à la page appelante. Exemple : .. code:: php callHook('MyHook'); echo $retour; ?> .. attention:: L'appel d'un hook renvoyant une valeur ne doit pas être fait avec la fonction eval. La syntaxe suivante ne doit pas être utilisée : .. code:: php callHook('MyHook')) ?> Il est possible de combiner valeur de retour et passage de paramètres. .. code:: php callHook('MyHook', 'azerty') ?> Exemple : .. code:: php addHook('MyHook', 'MyHookFunction'); } public function MyHookFunction() { return 'Brian is in the kitchen :)'; } ?> La phrase ``Brian is in the kitchen :)`` est renvoyée à la page appelante. L'instruction ``echo $retour;`` affichera cette phrase.