Sin impuesto Con impuesto

Hooks en PrestaShop 9: cómo funcionan, cuáles usar y cómo crear los tuyos

Los hooks son la forma limpia de extender PrestaShop sin tocar el núcleo. Te explicamos los dos tipos, cómo registrarlos bien y los fallos silenciosos más habituales.

Equipo Rekire
Updated: 26/09/2026 2
Hooks en PrestaShop 9: cómo funcionan, cuáles usar y cómo crear los tuyos
Share:

Un hook es un punto de enganche que PrestaShop deja en su código para que un módulo pueda añadir contenido o reaccionar a un evento sin modificar el núcleo. Es la pieza que hace posible que una tienda tenga cien módulos y siga actualizándose. Si desarrollas para PrestaShop, entender bien los hooks te ahorra la mitad de los problemas.

Dos familias: display y action

  • Hooks de visualización (display*): devuelven HTML que se pinta en un sitio concreto de la página. Por ejemplo displayProductAdditionalInfo en la ficha o displayFooter en el pie.
  • Hooks de acción (action*): no pintan nada; se ejecutan cuando ocurre algo. actionValidateOrder al crearse un pedido, actionObjectProductUpdateAfter al guardar un producto.

Además hay hooks que devuelven datos para que el núcleo los combine, como paymentOptions, donde cada módulo de pago entrega sus PaymentOption.

Registrar un hook correctamente

El registro se hace en la instalación del módulo y queda guardado en la tabla 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');
}

El método se llama hook + el nombre del hook con la primera letra en mayúscula. PrestaShop no distingue mayúsculas en el nombre del hook, pero el método PHP sí tiene que existir.

Trampa habitual: si añades un hook en una versión nueva de tu módulo, las tiendas que ya lo tenían instalado no lo registran solas, porque install() no se vuelve a ejecutar. Hay que hacerlo en un script de upgrade/.

Posiciones y excepciones

Cuando varios módulos cuelgan del mismo hook, se ejecutan por el orden de la columna position. Se cambia en Diseño > Posiciones, donde también puedes excluir páginas concretas para un módulo. Si un bloque aparece donde no debe, mira primero ahí antes de tocar código.

Crear tus propios hooks

Un tema o un módulo puede llamar a un hook que no existe en el núcleo: {hook h='displayMiTiendaCabecera'} en Smarty o Hook::exec('displayMiTiendaCabecera') en PHP. La primera vez que un módulo lo registra, PrestaShop lo crea en la tabla hook. Es la forma más limpia de ofrecer puntos de extensión en tus propios desarrollos, y la que usamos, por ejemplo, para que cada sección de una portada sea editable por separado.

Por qué un módulo «no pinta nada»

  1. El módulo está instalado pero no registrado en ese hook (mira Posiciones).
  2. El tema no llama a ese hook. Un hook de Classic puede no existir en Hummingbird, o estar en otra zona.
  3. Hay una excepción de página configurada.
  4. El módulo está desactivado para esa tienda: en PrestaShop «activo» depende de la fila en module_shop, no solo de la columna active.
  5. La plantilla del módulo está sobrescrita en el tema y esa copia está vacía o desactualizada.

Buenas prácticas

  • Devuelve cadenas vacías en los hooks de visualización cuando no hay nada que mostrar: no metas contenedores vacíos que rompen la maquetación.
  • En hooks de acción, no lances excepciones sin control: un error ahí puede bloquear el guardado de un pedido.
  • Cachea en los hooks que se ejecutan en todas las páginas (displayHeader, displayTop): se multiplican por cada visita.

Los hooks bien usados hacen que un módulo sobreviva a actualizaciones de PrestaShop y a cambios de tema. Cuando alguien te proponga un override para algo que se puede hacer con un hook, desconfía.

0 comments
info You must log in to comment. Log in
Caricamento...
Consenso sui cookie
Torna all'inizio