---
title: Nuevos Hooks en PrestaShop 9.1
section: ps91
slug: new-hooks
description: Referencia completa de los 20 nuevos hooks y 2 hooks eliminados en PrestaShop 9.1 con ejemplos de uso.
last_updated: 2026-04
source_url: "https://ayudaprestashop.es/ps91/new-hooks"
---

# Nuevos Hooks en PrestaShop 9.1

> Referencia completa de los 20 nuevos hooks y 2 hooks eliminados en PrestaShop 9.1 con ejemplos de uso.

## Resumen — 21 nuevos, 2 eliminados

PrestaShop 9.1 añade **21 nuevos hooks** y elimina **2 hooks** del sistema anterior de Cart Rules. A continuacion se documenta cada uno con su signature y ejemplo de uso.

## Hooks de ciclo de vida de modulos

Tres nuevos hooks permiten reaccionar a eventos de gestion de modulos:

### actionModuleEnable

Se dispara **despues** de que un modulo es habilitado (enable). Util para reactivar funcionalidades dependientes.

*Ejemplo: reaccionar al enable de un modulo*

```php
public function hookActionModuleEnable(array $params): void
{
    $moduleName = $params['module_name']; // string
    
    if ($moduleName === 'ps_emailalerts') {
        // Reactivar integracion con alertas de email
        Configuration::updateValue('MY_MODULE_EMAIL_ALERTS', 1);
    }
}
```

### actionModuleDisable

Se dispara **despues** de que un modulo es deshabilitado. Util para limpiar dependencias.

*Ejemplo: limpiar al disable de un modulo*

```php
public function hookActionModuleDisable(array $params): void
{
    $moduleName = $params['module_name'];
    
    if ($moduleName === 'ps_emailalerts') {
        Configuration::updateValue('MY_MODULE_EMAIL_ALERTS', 0);
        // Desactivar features que dependen del modulo
    }
}
```

### actionModuleUpgradeAfter

Se dispara **despues** de una actualizacion exitosa de modulo. Permite ejecutar logica post-upgrade (limpiar cache, reindexar, notificar).

*Ejemplo: post-upgrade actions*

```php
public function hookActionModuleUpgradeAfter(array $params): void
{
    $moduleName = $params['module_name'];
    $moduleVersion = $params['module_version'] ?? '';
    
    // Log de upgrade para auditoria
    PrestaShopLogger::addLog(
        "Module {$moduleName} upgraded to {$moduleVersion}",
        1, null, 'Module', 0, true
    );
    
    // Limpiar cache de modulo si es necesario
    if ($moduleName === 'mi_modulo_dependiente') {
        Cache::clean('my_module_*');
    }
}
```

## Hooks de configuracion

### actionConfigurationUpdateValueBefore

Se dispara **antes** de que `Configuration::updateValue()` guarde un valor. Permite validar o modificar el valor antes de persistirlo.

*Ejemplo: validar configuracion antes de guardar*

```php
public function hookActionConfigurationUpdateValueBefore(array $params): void
{
    $key = $params['key'];       // string — nombre de la configuracion
    $value = &$params['value'];  // mixed — valor (por referencia, modificable)
    
    // Ejemplo: forzar formato en un campo de configuracion
    if ($key === 'PS_SHOP_EMAIL') {
        $value = strtolower(trim($value));
        if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
            throw new \PrestaShopException('Email de tienda invalido');
        }
    }
}
```

## Hooks del sistema de descuentos

Estos hooks solo estan disponibles cuando el feature flag `discount` esta activo:

| Hook | Tipo | Cuando se dispara |
| --- | --- | --- |
| actionAdminDuplicateDiscountBefore | Action | Antes de duplicar un descuento |
| actionAdminDuplicateDiscountAfter | Action | Despues de duplicar un descuento |
| actionDiscountGridDefinitionModifier | Action | Al construir la definicion del grid de descuentos |
| actionDiscountGridQueryBuilderModifier | Action | Al construir la query SQL del grid |
| actionDiscountGridDataModifier | Action | Al procesar los datos del grid |
| actionDiscountGridFilterFormModifier | Action | Al construir los filtros del grid |
| actionDiscountGridPresenterModifier | Action | Al preparar datos para la vista del grid |

*Ejemplo: añadir columna al grid de descuentos*

```php
public function hookActionDiscountGridDefinitionModifier(array $params): void
{
    /** @var \PrestaShop\PrestaShop\Core\Grid\Definition\GridDefinitionInterface $definition */
    $definition = $params['definition'];
    
    $definition->getColumns()->addAfter(
        'name',
        (new \PrestaShop\PrestaShop\Core\Grid\Column\Type\DataColumn('usage_count'))
            ->setName($this->trans('Usos', [], 'Modules.Mymodule.Admin'))
            ->setOptions(['field' => 'usage_count'])
    );
}
```

## Hooks del sistema de tags

PS 9.1 moderniza el sistema de tags con nuevos hooks Symfony:

| Hook | Descripcion |
| --- | --- |
| actionTagFormBuilderModifier | Modificar el formulario Symfony de tags |
| actionTagFormDataProviderData | Modificar datos al cargar formulario de tag |
| actionTagFormDataProviderDefaultData | Datos por defecto del formulario |
| actionBeforeCreateTagFormHandler | Antes de crear un tag |
| actionAfterCreateTagFormHandler | Despues de crear un tag |
| actionBeforeUpdateTagFormHandler | Antes de actualizar un tag |
| actionAfterUpdateTagFormHandler | Despues de actualizar un tag |

## Hooks de envio

| Hook | Descripcion |
| --- | --- |
| actionOverrideShippingFreePrice | Sobreescribir logica de envio gratis por precio minimo |
| actionOverrideShippingFreeWeight | Sobreescribir logica de envio gratis por peso minimo |

*Ejemplo: envio gratis personalizado*

```php
public function hookActionOverrideShippingFreePrice(array $params): void
{
    // $params contiene el carrito y el carrier
    $cart = $params['cart'];
    $carrier = $params['carrier'];
    
    // Ejemplo: envio gratis si el cliente es VIP
    $customer = new Customer($cart->id_customer);
    if (in_array($customer->id_default_group, [3, 4])) { // Grupos VIP
        $params['is_free'] = true;
    }
}
```

## Hooks de combinaciones

### actionUpdateDefaultCombinationAfter

Se dispara despues de cambiar la combinacion por defecto de un producto. Util para recalcular precios, actualizar feeds, etc.

*Ejemplo*

```php
public function hookActionUpdateDefaultCombinationAfter(array $params): void
{
    $productId = (int) $params['id_product'];
    $combinationId = (int) $params['id_product_attribute'];
    
    // Actualizar feed de Google Shopping
    $this->updateProductFeed($productId, $combinationId);
}
```

## Hooks de Hummingbird

El tema Hummingbird introduce cambios en hooks de display:

| Cambio | Detalle |
| --- | --- |
| displaySearch — ELIMINADO | Causaba conflictos en paginas 404. Ya no existe en Hummingbird. |
| displayOrderDetail — NUEVO USO | Reemplaza la variable hook $HOOK_DISPLAYORDERDETAIL |
| displayModalContent — NUEVO | Permite inyectar contenido en modals del tema |

## Hooks eliminados en PS 9.1

> **[!!] Hooks eliminados**
>
> Si tu modulo usa estos hooks, dejara de funcionar en PS 9.1:

| Hook eliminado | Razon | Alternativa |
| --- | --- | --- |
| actionCartRuleFormDataProviderData | Reemplazado por el nuevo sistema de descuentos | actionDiscountGridDataModifier o el nuevo FormType de descuentos |
| actionCartRuleFormDataProviderDefaultData | Reemplazado por el nuevo sistema de descuentos | Nuevo FormType de descuentos |
| displaySearch (en Hummingbird) | Conflictos con pagina 404 | Usar displayTop o widget de busqueda propio |


---

*Fuente: [https://ayudaprestashop.es/ps91/new-hooks](https://ayudaprestashop.es/ps91/new-hooks). Version Markdown generada automaticamente para consumo por LLMs.*
