Skip to content

← Módulos y desarrollo

Hooks y overrides

Las dos formas de enganchar código al núcleo, cuándo usar cada una y sus riesgos.

5 slides 5 min de lectura
  1. PrestaShop · Mòduls

    Hooks y overrides

    Dos formas de intervenir el núcleo, con riesgos muy distintos.

    PrestaShop · Módulos y desarrollo arlaf.dev
  2. Hooks, la herramienta principal

    Un hook es un punto de extensión que el núcleo ofrece. Los hay de dos tipos.

    • display* — inyectan HTML en un lugar de la página.
    • action* — reaccionan a un evento (pedido, alta de cliente…).
    • Te registras al hook y PrestaShop te llama cuando toca.
    PrestaShop · Módulos y desarrollo arlaf.dev
  3. Reaccionar a un evento

    public function install()
    {
        return parent::install()
            && $this->registerHook('actionValidateOrder');
    }
    
    public function hookActionValidateOrder($params)
    {
        $order = $params['order'];
        // enviar a un CRM, notificar, registrar...
    }
    
    PrestaShop · Módulos y desarrollo arlaf.dev
  4. Overrides, la última opción

    Un override sobrescribe una clase o controlador del núcleo sin editarlo. Es potente, pero dos módulos que sobrescriban lo mismo entran en conflicto.

    PrestaShop · Módulos y desarrollo arlaf.dev
  5. Hooks siempre que puedas; overrides solo cuando no hay ningún hook que lo permita.
    PrestaShop · Módulos y desarrollo arlaf.dev
Leer la nota completa

Tard o d’hora voldràs que el nucli faci alguna cosa que de sèrie no fa. Hi ha dues maneres d’aconseguir-ho, i triar bé marca la diferència entre una botiga mantenible i una que es trenca sola.

Hooks: la via recomanada

Un hook és un punt d’extensió que el propi PrestaShop t’ofereix. N’hi ha de dos grans tipus:

  • display* — injecten HTML en un lloc concret (la home, la fitxa de producte, el checkout…).
  • action* — reaccionen a un esdeveniment del sistema (es valida una comanda, s’actualitza un estoc, es dóna d’alta un client…).

Et registres al hook a l’install() i implementes el mètode corresponent; PrestaShop ja et crida quan toca. És net, no toca el nucli i sobreviu a les actualitzacions.

Overrides: potents i perillosos

Un override sobreescriu una classe o un controlador del nucli sense editar-lo directament (els teus fitxers viuen a override/). És molt potent, però té un risc real: si dos mòduls sobreescriuen la mateixa classe, entren en conflicte i un dels dos deixa de funcionar. A més, dificulten el diagnòstic de bugs.

La regla

Hooks sempre que es pugui; overrides només com a últim recurs, quan no hi ha cap hook que permeti el que necessites. Si t’acostumes a buscar primer el hook adequat, els teus mòduls seran molt més robustos i conviuran bé amb els d’altres.