> For the complete documentation index, see [llms.txt](https://akyos.gitbook.io/book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://akyos.gitbook.io/book/prestashop/modules/hook.md).

# Hook

### Qu'est ce qu'un hook ?

Les hooks sont un mécanisme central dans PrestaShop. Ils permettent de relier le thème, les modules et certains événements du système sans modifier directement le cœur. C'est un point d’entrée ou un point d’accroche sur lequel un ou plusieurs modules peuvent venir se brancher pour afficher du contenu ou exécuter une action.

### Types de hook

#### Hooks d’affichage

Les hooks d’affichage, souvent nommés avec le préfixe <kbd>**display**</kbd>, servent à **insérer du contenu dans une page**. Ils sont très présents dans le thème. Par exemple, un hook comme **`displayFooter`** est appelé dans le thème pour afficher du contenu le footer.

#### Hooks d’action

Les hooks d’action, souvent nommés avec le préfixe **`action`**, servent à e**xécuter du code lorsqu’un événement se produit**. Ils ne génèrent pas forcément de HTML. Ils sont utilisés pour modifier un comportement, enregistrer une information, enrichir un traitement ou réagir à un événement métier ou technique.

:pushpin:  Liste des hooks existants : <https://devdocs.prestashop-project.org/9/modules/concepts/hooks/list-of-hooks/#search-for-a-hook>

### Comment appeller un hook ?

* Dans le thème avec `{hook h='NomDuHook'}`
* Dans le code php avec `Hook::exec('NomDuHook');`

Il est possible d'appeler un module précis en ajoutant le paramètre `mod`&#x20;

```php
{hook h='hookName' mod='modulename'}
```

### Ajouter un hook dans un module

Quand un module veut réagir à un hook, il doit généralement s’enregistrer sur ce hook et implémenter la méthode correspondante. Exemple :&#x20;

<pre class="language-php"><code class="lang-php">public function install() {
<strong>    return parent::install() &#x26;&#x26; $this->registerHook('displayFooter');
</strong>}

public function hookDisplayFooter($params) {
<strong>    // logique puis rendu éventuel
</strong>}
</code></pre>

La méthode registerHook() permet de greffer le module sur le hook, et la méthode hookDisplayFooter() sera appelée lorsque PrestaShop exécutera ce hook. La notion de "greffe" est très présente sur PrestaShop.

{% hint style="info" %}
Dans le langage métier de PrestaShop, on dit souvent qu’un module est "greffé" sur un hook. Cela signifie simplement qu’il est enregistré pour intervenir à cet endroit. Cette greffe permet au module d’apparaître dans la page des positions du back-office et d’être exécuté lorsque le hook est déclenché. Le thème appelle un hook, et le module greffé s’y affiche.
{% endhint %}

### Hook personnalisé

Si beaucoup de hook existent déjà, il est bien sûr possible d'en créer des nouveaux.&#x20;

<pre class="language-php"><code class="lang-php">public function install() {
<strong>    return parent::install() &#x26;&#x26; $this->registerHook('displayAkyosBanner');
</strong>}

public function hookDisplayAkyosBanner($params) {
<strong>    // logique puis rendu éventuel
</strong>}
</code></pre>
