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 :
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.
<?php if(!defined('PLX_ROOT')) exit; ?>
<div id="sidebar">
...
<?php eval($plxShow->callHook('SidebarTest')) ?>
</div>
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 :
<?php eval($plxShow->callHook('MyHook', 'param1')) ?>
Pour appeler un hook avec plusieurs paramètres, il faut les passer sous forme de tableau.
..code:: php
<?php eval($plxShow->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
:
<?php eval($plxShow->callHook('MyHook', array('azerty', 'qwerty'))) ?>
<?php
class test extends MyPlugin {
public function __construct($default_lang) {
# Appel du constructeur de la classe plxPlugin (obligatoire)
parent::__construct($default_lang);
# Déclaration des hooks
$this->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 :
<?php
$retour = $plxShow->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 :
<?php $retour = eval($plxShow->callHook('MyHook')) ?>
Il est possible de combiner valeur de retour et passage de paramètres.
<?php $retour = $plxShow->callHook('MyHook', 'azerty') ?>
Exemple :
<?php
class test extends MyPlugin {
public function __construct($default_lang) {
# Appel du constructeur de la classe plxPlugin (obligatoire)
parent::__construct($default_lang);
# Déclaration des hooks
$this->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.