Los hooks son la forma en que los modulos interactuan con PrestaShop sin modificar archivos del nucleo. Entender que hook usar, cuando se dispara y que datos proporciona es conocimiento esencial para todo desarrollador de PrestaShop. Esta referencia cubre los hooks que usaras con mas frecuencia.

Display Hooks vs. Action Hooks

PrestaShop tiene dos tipos de hooks:

  • Display Hooks (prefijo: display) – renderizan contenido en posiciones especificas de la pagina. Tu metodo hook devuelve HTML. Ejemplo: displayHeader, displayProductAdditionalInfo
  • Action Hooks (prefijo: action) – se disparan cuando algo sucede. Tu metodo hook ejecuta logica pero no devuelve nada visible. Ejemplo: actionCartSave, actionOrderStatusPostUpdate

Front Office Display Hooks

Estructura de la pagina

  • displayHeader – dentro de <head>. Agrega CSS, meta tags, referencias JS. Se dispara en cada pagina del front.
  • displayTop / displayNavFullWidth – area de navegacion superior. Banners, anuncios.
  • displayHome – area de contenido de la pagina de inicio. Productos destacados, sliders, promociones.
  • displayFooter / displayFooterBefore – contenido del footer. Suscripcion al newsletter, sellos de confianza.

Pagina de producto

  • displayProductAdditionalInfo – debajo del boton de anadir al carrito. Estimaciones de entrega, alertas de stock.
  • displayProductExtraContent – agrega pestanas a la pagina de producto. Devuelve un objeto PrestaShop\PrestaShop\Core\Product\ProductExtraContent.
  • displayAfterProductThumbs – debajo de las imagenes del producto. Medios adicionales, vistas de 360 grados.
  • displayProductListReviews – en los listados de productos, debajo de cada producto. Calificaciones con estrellas.

Carrito y Checkout

  • displayShoppingCartFooter – debajo de la tabla del carrito. Sugerencias de venta cruzada.
  • displayPaymentReturn – pagina de confirmacion del pedido. Mensajes de agradecimiento, informacion de seguimiento.
  • displayOrderConfirmation – tambien en la confirmacion del pedido. Scripts de tracking de analytics.

Action Hooks principales

Eventos del carrito

  • actionCartSave – se dispara despues de cualquier modificacion del carrito. Usalo para verificaciones de stock en tiempo real o recalculos de precios.
  • actionCartUpdateQuantityBefore – antes de los cambios de cantidad. Te permite validar o bloquear el cambio.

Eventos de pedidos

  • actionValidateOrder – se dispara cuando se crea un pedido. Contiene el objeto de pedido completo, el carrito, el cliente y la moneda.
  • actionOrderStatusPostUpdate – despues de un cambio de estado del pedido. Activar notificaciones, actualizar sistemas externos, ajustar stock.
  • actionPaymentConfirmation – cuando el pago es confirmado. Diferente de la validacion del pedido para metodos de pago diferido.

Eventos del cliente

  • actionCustomerAccountAdd – nuevo registro de cliente. Sincronizacion con CRM, envio de email de bienvenida.
  • actionAuthentication – el cliente inicia sesion. Actualizar ultimo acceso, sincronizar datos de sesion.

Eventos del producto

  • actionProductSave – producto creado o actualizado. Sincronizar con feeds, actualizar caches.
  • actionProductDelete – producto eliminado. Limpiar datos relacionados del modulo.
  • actionUpdateQuantity – cambios en el nivel de stock. Activar alertas de stock bajo, actualizar disponibilidad.

Dynamic Hooks (PS 1.7.7+)

PrestaShop genera hooks dinamicamente basados en la entidad y la accion:

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

Por ejemplo: actionProductFormBuilderModifier te permite agregar campos al formulario de edicion de producto en el panel de administracion.

El hook setMedia

actionFrontControllerSetMedia es el lugar correcto para registrar archivos CSS y JavaScript. A diferencia de displayHeader, se dispara antes de que la pagina se renderice y proporciona el contexto 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'
        );
    }
}

Errores comunes

  • Consultas pesadas en Display Hooks – los Display Hooks se disparan en cada carga de pagina. Cachea tus consultas o usa carga diferida.
  • Registrar hooks que no usas – cada hook registrado agrega sobrecarga, incluso si el metodo no devuelve nada.
  • Olvidar registerHook() en install() – los hooks deben registrarse durante la instalacion del modulo. Olvidar esto es la razon numero 1 por la que los hooks no se disparan.
  • No verificar la clase del controller – si tu hook solo debe ejecutarse en paginas de producto, verifica instanceof ProductController antes de trabajar.

Los hooks son poderosos pero requieren disciplina. Usa el hook correcto para la tarea correcta, manten tus metodos hook rapidos y siempre prueba con la cache activada para detectar problemas de rendimiento temprano.

Compartir este artículo:
David Miller

David Miller

Más de una década de experiencia práctica con PrestaShop. David desarrolla módulos de comercio electrónico de alto rendimiento centrados en SEO, optimización del checkout y gestión de tiendas....

Comentarios (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.
Responder
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.
Responder

Dejar un comentario

Cargando...
Volver arriba