Gli hooks sono il modo in cui i moduli interagiscono con PrestaShop senza modificare i file del core. Capire quale hook usare, quando si attiva e quali dati fornisce e una conoscenza essenziale per ogni sviluppatore PrestaShop. Questo riferimento copre gli hooks che userai piu spesso.

Display Hooks vs. Action Hooks

PrestaShop ha due tipi di hooks:

  • Display Hooks (prefisso: display) – visualizzano contenuti in posizioni specifiche della pagina. Il tuo metodo hook restituisce HTML. Esempio: displayHeader, displayProductAdditionalInfo
  • Action Hooks (prefisso: action) – si attivano quando succede qualcosa. Il tuo metodo hook esegue logica ma non restituisce nulla di visibile. Esempio: actionCartSave, actionOrderStatusPostUpdate

Front Office Display Hooks

Struttura della pagina

  • displayHeader – all'interno di <head>. Aggiungi CSS, meta tag, riferimenti JS. Si attiva su ogni pagina front.
  • displayTop / displayNavFullWidth – area di navigazione superiore. Banner, annunci.
  • displayHome – area contenuti della homepage. Prodotti in evidenza, slider, promozioni.
  • displayFooter / displayFooterBefore – contenuto del footer. Iscrizione newsletter, badge di fiducia.

Pagina prodotto

  • displayProductAdditionalInfo – sotto il pulsante aggiungi al carrello. Stime di consegna, avvisi sulle scorte.
  • displayProductExtraContent – aggiunge schede alla pagina prodotto. Restituisce un oggetto PrestaShop\PrestaShop\Core\Product\ProductExtraContent.
  • displayAfterProductThumbs – sotto le immagini del prodotto. Media aggiuntivi, viste a 360 gradi.
  • displayProductListReviews – negli elenchi prodotti, sotto ogni prodotto. Valutazioni a stelle.

Carrello e Checkout

  • displayShoppingCartFooter – sotto la tabella del carrello. Suggerimenti cross-sell.
  • displayPaymentReturn – pagina di conferma ordine. Messaggi di ringraziamento, informazioni di tracciamento.
  • displayOrderConfirmation – anche sulla conferma ordine. Script di tracking analytics.

Action Hooks principali

Eventi del carrello

  • actionCartSave – si attiva dopo ogni modifica al carrello. Usalo per controlli delle scorte in tempo reale o ricalcoli dei prezzi.
  • actionCartUpdateQuantityBefore – prima delle modifiche alla quantita. Ti permette di validare o bloccare la modifica.

Eventi degli ordini

  • actionValidateOrder – si attiva quando un ordine viene creato. Contiene l'oggetto ordine completo, il carrello, il cliente e la valuta.
  • actionOrderStatusPostUpdate – dopo un cambio di stato dell'ordine. Attiva notifiche, aggiorna sistemi esterni, modifica le scorte.
  • actionPaymentConfirmation – quando il pagamento e confermato. Diverso dalla validazione dell'ordine per i metodi di pagamento differito.

Eventi del cliente

  • actionCustomerAccountAdd – nuova registrazione cliente. Sincronizzazione con CRM, invio email di benvenuto.
  • actionAuthentication – il cliente effettua il login. Aggiornamento ultimo accesso, sincronizzazione dati di sessione.

Eventi del prodotto

  • actionProductSave – prodotto creato o aggiornato. Sincronizzazione con i feed, aggiornamento cache.
  • actionProductDelete – prodotto rimosso. Pulizia dei dati del modulo correlati.
  • actionUpdateQuantity – cambiamenti del livello delle scorte. Attivazione alert scorte basse, aggiornamento disponibilita.

Dynamic Hooks (PS 1.7.7+)

PrestaShop genera hooks dinamicamente in base all'entita e all'azione:

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

Ad esempio: actionProductFormBuilderModifier ti permette di aggiungere campi al form di modifica prodotto nel pannello admin.

L'hook setMedia

actionFrontControllerSetMedia e il posto giusto per registrare i file CSS e JavaScript. A differenza di displayHeader, si attiva prima del rendering della pagina e fornisce il contesto del 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'
        );
    }
}

Insidie comuni

  • Query pesanti nei Display Hooks – i Display Hooks si attivano a ogni caricamento di pagina. Metti in cache le tue query o usa il caricamento lazy.
  • Registrare hooks che non usi – ogni hook registrato aggiunge overhead, anche se il metodo non restituisce nulla.
  • Dimenticare registerHook() in install() – gli hooks devono essere registrati durante l'installazione del modulo. Dimenticare questo e il motivo numero 1 per cui gli hooks non si attivano.
  • Non controllare la classe del controller – se il tuo hook deve funzionare solo sulle pagine prodotto, verifica instanceof ProductController prima di procedere.

Gli hooks sono potenti ma richiedono disciplina. Usa l'hook giusto per il compito giusto, mantieni i tuoi metodi hook veloci e testa sempre con la cache attivata per individuare problemi di performance in anticipo.

Condividi questo articolo:
David Miller

David Miller

Oltre un decennio di esperienza pratica con PrestaShop. David sviluppa moduli e-commerce ad alte prestazioni focalizzati su SEO, ottimizzazione del checkout e gestione del negozio. Appassionato di...

Commenti (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.
Rispondi
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.
Rispondi

Lascia un commento

Caricamento in corso ...
Torna all'inizio