Système de Hooks: Difference between revisions

Jump to navigation Jump to search
m
no edit summary
(syntaxe)
mNo edit summary
Tag: 2017 source edit
Line 46: Line 46:
2- Placer ensuite l'appel des hooks là où l'ajout de code est désiré :
2- Placer ensuite l'appel des hooks là où l'ajout de code est désiré :


<source lang="php">
<syntaxhighlight lang="PHP">
$parameters=array();
$parameters=array();
$reshook=$hookmanager->executeHooks('hookname',$parameters,$object,$action); // See description below
$reshook=$hookmanager->executeHooks('hookname',$parameters,$object,$action); // See description below
Line 54: Line 54:
   ... // standard code that can be disabled/replaced by hook if return code > 0.
   ... // standard code that can be disabled/replaced by hook if return code > 0.
}
}
</source>
</syntaxhighlight>


'''$hookmanager->executeHooks()''' accepte 4 paramètres et ajoute un hook (qui est un point d'entrée dans votre script pour des fonctions externes à votre script et module):
'''$hookmanager->executeHooks()''' accepte 4 paramètres et ajoute un hook (qui est un point d'entrée dans votre script pour des fonctions externes à votre script et module):
Line 61: Line 61:


- '''$parameters''' est un tableau personnalisé pour transmettre plus de données personnalisées au hook (la fonction dans le hook peut traiter ces données). Placez ici ce que vous voulez, ce peut être un fichier, un tableau de chaînes de caractères, n'importe quoi... Par exemple :
- '''$parameters''' est un tableau personnalisé pour transmettre plus de données personnalisées au hook (la fonction dans le hook peut traiter ces données). Placez ici ce que vous voulez, ce peut être un fichier, un tableau de chaînes de caractères, n'importe quoi... Par exemple :
<source lang="php">
<syntaxhighlight lang="PHP">
$parameters=array('file'=>'my/path/to/a/file', 'customnames'=>array('henry','david','john'));
$parameters=array('file'=>'my/path/to/a/file', 'customnames'=>array('henry','david','john'));
</source>
</syntaxhighlight>


- '''$object''' est l'objet que vous voulez passer à la fonction du hook, certainement les données du module courant (ex: l'objet facture si on est dans un module de facture, etc..). Ce peut être ce que vous voulez, mais souvenez vous qu'il sera le principal composant utilisé par les fonctions du hook.
- '''$object''' est l'objet que vous voulez passer à la fonction du hook, certainement les données du module courant (ex: l'objet facture si on est dans un module de facture, etc..). Ce peut être ce que vous voulez, mais souvenez vous qu'il sera le principal composant utilisé par les fonctions du hook.
Line 79: Line 79:
Ce qui veut dire que lorsqu'on se trouve dans le contexte donné, votre code sera appelé.  
Ce qui veut dire que lorsqu'on se trouve dans le contexte donné, votre code sera appelé.  
Pour cela, éditer le descripteur de votre module ('''/htdocs/''yourmodulename''/core/modules/mod''YourModuleName''.class.php''') et renseignez la variable '''$this->module_parts''' comme sur l'exemple :
Pour cela, éditer le descripteur de votre module ('''/htdocs/''yourmodulename''/core/modules/mod''YourModuleName''.class.php''') et renseignez la variable '''$this->module_parts''' comme sur l'exemple :
<source lang="php">
<syntaxhighlight lang="PHP">
$this->module_parts = array(
$this->module_parts = array(
'hooks' => array('hookcontext1','hookcontext2')  // Set here all hooks context you want to support
'hooks' => array('hookcontext1','hookcontext2')  // Set here all hooks context you want to support
);
);
</source>
</syntaxhighlight>


Note: il est possible de trouver le contexte d'un module en rajoutant  
Note: il est possible de trouver le contexte d'un module en rajoutant  
<source lang="php">
<syntaxhighlight lang="PHP">
print('Module context: '.$object->context);
print('Module context: '.$object->context);
</source>
</syntaxhighlight>
(rajoutez ce bout de code dans le fichier php où réside l'appel des hooks, et supprimez le, une fois la valeur du contexte relevée).
(rajoutez ce bout de code dans le fichier php où réside l'appel des hooks, et supprimez le, une fois la valeur du contexte relevée).


Line 98: Line 98:
Créez '''/htdocs/''yourmodulename''/class/actions_''yourmodulename''.class.php''' dans votre module avec un code qui contient la méthode appelée par le hook (le nom de cette méthode se voit au moment de l'appel executeHooks). Voici un exemple:
Créez '''/htdocs/''yourmodulename''/class/actions_''yourmodulename''.class.php''' dans votre module avec un code qui contient la méthode appelée par le hook (le nom de cette méthode se voit au moment de l'appel executeHooks). Voici un exemple:


<source lang="php">
<syntaxhighlight lang="PHP">
class ActionsYourModuleName  
class ActionsYourModuleName  
{  
{  
Line 137: Line 137:
}
}
}  
}  
</source>
</syntaxhighlight>


La méthode sera alors automatiquement appelée au moment de l'appel du code qui contient le executeHooks fournissant à votre code les éléments $parameters, $object et $action.
La méthode sera alors automatiquement appelée au moment de l'appel du code qui contient le executeHooks fournissant à votre code les éléments $parameters, $object et $action.

Navigation menu