Sin impuesto Con impuesto

Hook in PrestaShop 9: come funzionano, quali usare e come creare i tuoi

Gli hook sono il modo pulito per estendere PrestaShop senza toccare il core. Ti spieghiamo i due tipi, come registrarli bene e gli errori silenziosi più comuni.

Jesús Meilán
Updated: 26/09/2026 166
Hook in PrestaShop 9: come funzionano, quali usare e come creare i tuoi
Share:

Un hook è un punto di aggancio che PrestaShop lascia nel suo codice perché un modulo possa aggiungere contenuto o reagire a un evento senza modificare il core. È il pezzo che permette a un negozio di avere cento moduli e continuare ad aggiornarsi. Se sviluppi per PrestaShop, capire bene gli hook ti risparmia metà dei problemi.

Due famiglie: display e action

  • Hook di visualizzazione (display*): restituiscono HTML che viene mostrato in un punto preciso della pagina. Per esempio displayProductAdditionalInfo nella scheda prodotto o displayFooter nel piè di pagina.
  • Hook di azione (action*): non mostrano nulla; si eseguono quando succede qualcosa. actionValidateOrder quando si crea un ordine, actionObjectProductUpdateAfter quando si salva un prodotto.

Ci sono poi hook che restituiscono dati che il core combina, come paymentOptions, dove ogni modulo di pagamento consegna le sue PaymentOption.

Registrare correttamente un hook

La registrazione si fa durante l'installazione del modulo e resta salvata nella tabella hook_module:

public function install()
{
    return parent::install()
        && $this->registerHook('displayProductAdditionalInfo')
        && $this->registerHook('actionValidateOrder');
}

public function hookDisplayProductAdditionalInfo(array $params)
{
    $this->context->smarty->assign(['product' => $params['product']]);

    return $this->fetch('module:' . $this->name . '/views/templates/hook/info.tpl');
}

Il metodo si chiama hook + il nome dell'hook con la prima lettera maiuscola. PrestaShop non distingue maiuscole e minuscole nel nome dell'hook, ma il metodo PHP deve esistere.

Trappola comune: se aggiungi un hook in una nuova versione del tuo modulo, i negozi che lo avevano già installato non lo registrano da soli, perché install() non viene rieseguito. Va fatto in uno script di upgrade/.

Posizioni ed eccezioni

Quando più moduli sono agganciati allo stesso hook, si eseguono nell'ordine della colonna position. Si cambia in Design > Posizioni, dove puoi anche escludere pagine specifiche per un modulo. Se un blocco compare dove non dovrebbe, guarda prima lì e poi tocca il codice.

Creare i tuoi hook

Un tema o un modulo può chiamare un hook che non esiste nel core: {hook h='displayMiTiendaCabecera'} in Smarty o Hook::exec('displayMiTiendaCabecera') in PHP. La prima volta che un modulo lo registra, PrestaShop lo crea nella tabella hook. È il modo più pulito per offrire punti di estensione nei tuoi sviluppi, ed è quello che usiamo, per esempio, per rendere modificabile separatamente ogni sezione di una home page.

Perché un modulo «non mostra niente»

  1. Il modulo è installato ma non registrato su quell'hook (guarda Posizioni).
  2. Il tema non chiama quell'hook. Un hook di Classic può non esistere in Hummingbird, o trovarsi in un'altra zona.
  3. È configurata un'eccezione di pagina.
  4. Il modulo è disattivato per quel negozio: in PrestaShop «attivo» dipende dalla riga in module_shop, non solo dalla colonna active.
  5. Il template del modulo è sovrascritto nel tema e quella copia è vuota o non aggiornata.

Buone pratiche

  • Restituisci stringhe vuote negli hook di visualizzazione quando non c'è niente da mostrare: non inserire contenitori vuoti che rompono il layout.
  • Negli hook di azione, non lanciare eccezioni senza controllo: un errore lì può bloccare il salvataggio di un ordine.
  • Usa la cache negli hook che si eseguono in tutte le pagine (displayHeader, displayTop): si moltiplicano per ogni visita.

Gli hook usati bene fanno sì che un modulo sopravviva agli aggiornamenti di PrestaShop e ai cambi di tema. Quando qualcuno ti propone un override per qualcosa che si può fare con un hook, diffida.

Caricamento...
Consenso sui cookie
Torna all'inizio