Les hooks sont la facon dont les modules interagissent avec PrestaShop sans modifier les fichiers du noyau. Comprendre quel hook utiliser, quand il se declenche et quelles donnees il fournit est un savoir essentiel pour tout developpeur PrestaShop. Cette reference couvre les hooks que vous utiliserez le plus souvent.

Display Hooks vs. Action Hooks

PrestaShop a deux types de hooks :

  • Display Hooks (prefixe : display) – affichent du contenu a des positions specifiques sur la page. Votre methode de hook retourne du HTML. Exemple : displayHeader, displayProductAdditionalInfo
  • Action Hooks (prefixe : action) – se declenchent quand quelque chose se produit. Votre methode de hook execute de la logique mais ne retourne rien de visible. Exemple : actionCartSave, actionOrderStatusPostUpdate

Front Office Display Hooks

Structure de page

  • displayHeader – a l'interieur de <head>. Ajoutez CSS, meta tags, references JS. Se declenche sur chaque page front.
  • displayTop / displayNavFullWidth – zone de navigation superieure. Bannieres, annonces.
  • displayHome – zone de contenu de la page d'accueil. Produits en vedette, sliders, promotions.
  • displayFooter / displayFooterBefore – contenu du footer. Inscription newsletter, badges de confiance.

Page produit

  • displayProductAdditionalInfo – sous le bouton d'ajout au panier. Estimations de livraison, alertes de stock.
  • displayProductExtraContent – ajoute des onglets a la page produit. Retourne un objet PrestaShop\PrestaShop\Core\Product\ProductExtraContent.
  • displayAfterProductThumbs – sous les images du produit. Medias supplementaires, vues a 360 degres.
  • displayProductListReviews – dans les listes de produits, sous chaque produit. Notes en etoiles.

Panier et Checkout

  • displayShoppingCartFooter – sous le tableau du panier. Suggestions de vente croisee.
  • displayPaymentReturn – page de confirmation de commande. Messages de remerciement, informations de suivi.
  • displayOrderConfirmation – egalement sur la confirmation de commande. Scripts de tracking analytics.

Action Hooks essentiels

Evenements du panier

  • actionCartSave – se declenche apres toute modification du panier. A utiliser pour les verifications de stock en temps reel ou les recalculs de prix.
  • actionCartUpdateQuantityBefore – avant les changements de quantite. Permet de valider ou bloquer la modification.

Evenements de commande

  • actionValidateOrder – se declenche quand une commande est creee. Contient l'objet commande complet, le panier, le client et la devise.
  • actionOrderStatusPostUpdate – apres un changement de statut de commande. Declencher des notifications, mettre a jour les systemes externes, ajuster le stock.
  • actionPaymentConfirmation – quand le paiement est confirme. Different de la validation de commande pour les methodes de paiement differe.

Evenements client

  • actionCustomerAccountAdd – nouvelle inscription client. Synchronisation CRM, declenchement d'email de bienvenue.
  • actionAuthentication – le client se connecte. Mise a jour de la derniere connexion, synchronisation des donnees de session.

Evenements produit

  • actionProductSave – produit cree ou mis a jour. Synchronisation vers les flux, mise a jour des caches.
  • actionProductDelete – produit supprime. Nettoyage des donnees liees au module.
  • actionUpdateQuantity – changements de niveau de stock. Declenchement d'alertes de stock bas, mise a jour de la disponibilite.

Dynamic Hooks (PS 1.7.7+)

PrestaShop genere des hooks dynamiquement en fonction de l'entite et de l'action :

action{Entity}{Action}Before
action{Entity}{Action}After

Par exemple : actionProductFormBuilderModifier vous permet d'ajouter des champs au formulaire d'edition de produit dans le panel admin.

Le hook setMedia

actionFrontControllerSetMedia est l'endroit correct pour enregistrer les fichiers CSS et JavaScript. Contrairement a displayHeader, il se declenche avant le rendu de la page et fournit le contexte du controller :

public function hookActionFrontControllerSetMedia($params)
{
    $controller = $this->context->controller;
    if ($controller instanceof ProductController) {
        $this->context->controller->registerStylesheet(
            'my-module-css',
            'modules/' . $this->name . '/views/css/product.css'
        );
    }
}

Pieges courants

  • Requetes lourdes dans les Display Hooks – les Display Hooks se declenchent a chaque chargement de page. Mettez vos requetes en cache ou utilisez le chargement paresseux.
  • Enregistrer des hooks que vous n'utilisez pas – chaque hook enregistre ajoute du surcharge, meme si la methode ne retourne rien.
  • Oublier registerHook() dans install() – les hooks doivent etre enregistres lors de l'installation du module. Oublier cela est la raison numero 1 pour laquelle les hooks ne se declenchent pas.
  • Ne pas verifier la classe du controller – si votre hook ne doit s'executer que sur les pages produit, verifiez instanceof ProductController avant de travailler.

Les hooks sont puissants mais demandent de la discipline. Utilisez le bon hook pour la bonne tache, gardez vos methodes de hook rapides et testez toujours avec le cache active pour detecter les problemes de performance tot.

Partager cet article:
David Miller

David Miller

Plus d'une décennie d'expertise pratique PrestaShop. David développe des modules e-commerce haute performance axés sur le SEO, l'optimisation du passage en caisse et la gestion de boutique....

Commentaires (2)

D
David Chen 14/02/2026
The section on displayProductAdditionalInfo was really useful. We were hooking into the wrong place for our custom fields module. Switched to the recommended hook and it works perfectly now.
Répondre
A
Anna Petrova 14/02/2026
This hooks reference is exactly what I needed. Bookmarked! I have been searching for a comprehensive list that covers all three PS versions in one place.
Répondre

Laisser un commentaire

Chargement...
Retour en haut