---
title: displayAdminProductsExtra
section: hooks
slug: displayAdminProductsExtra
hook_type: display
category: display-admin
location: BO
since_version: 1.5
source_url: "https://ayudaprestashop.es/hooks/displayAdminProductsExtra"
---

# Hook `displayAdminProductsExtra`

| Propiedad | Valor |
| --- | --- |
| Tipo | Display |
| Localizacion | BO |
| Categoria | display-admin |
| Desde version | 1.5 |

## Descripcion

Añade una pestaña extra en el formulario de producto del back office. Permite que tu modulo tenga su propia seccion dentro de la ficha de producto del admin, ideal para configuraciones especificas por producto como campos personalizados, integraciones con marketplaces, datos de logistica, etc.

## Parametros

| Nombre | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `id_product` | `int` | si | ID del producto que se esta editando |

## Valor de retorno

- **Tipo**: `string`
- **Descripcion**: HTML del contenido de la pestaña extra

## Disparado por

| Contexto | Clase | Metodo | Fichero |
| --- | --- | --- | --- |
| AdminProductsController | `AdminProductsControllerCore` | `initFormModules()` | `controllers/admin/AdminProductsController.php` |

**Paginas**: `admin-product-form`

## Registro del hook

```php
public function install()
{
    return parent::install()
        && $this->registerHook('displayAdminProductsExtra');
}
```

## Ejemplo de uso

```php
/**
 * Hook displayAdminProductsExtra — Tab con campos custom por producto
 */
public function hookDisplayAdminProductsExtra($params)
{
    $id_product = (int)($params['id_product'] ?? Tools::getValue('id_product'));

    // Cargar datos guardados para este producto
    $savedData = Db::getInstance()->getRow(
        'SELECT * FROM `' . _DB_PREFIX_ . 'mymodule_product_data`
         WHERE id_product = ' . $id_product
    );

    $this->context->smarty->assign([
        'id_product'      => $id_product,
        'custom_field_1'  => $savedData['custom_field_1'] ?? '',
        'custom_field_2'  => $savedData['custom_field_2'] ?? '',
        'module_name'     => $this->displayName,
        'save_url'        => $this->context->link->getAdminLink('AdminModules', true, [], [
            'configure' => $this->name,
            'action' => 'saveProductData',
            'id_product' => $id_product,
            'ajax' => 1,
        ]),
    ]);

    return $this->display(__FILE__, 'views/templates/admin/product-tab.tpl');
}
```

## Notas y gotchas

- La pestaña aparece junto a las demas (Informacion, Precios, SEO, etc.) en el formulario de producto.
- Para guardar los datos, necesitas escuchar actionProductSave o actionProductUpdate y procesar el POST.
- En PS 8+/9, el formulario de producto es Symfony. Usa actionProductFormBuilderModifier como alternativa moderna.
- El id_product puede ser 0 si el producto es nuevo (aun no guardado). Maneja ese caso.
- El HTML devuelto se renderiza dentro de un <div class="product-tab-content"> — usa las clases CSS del admin.

## Hooks relacionados

- [`actionProductFormBuilderModifier`](https://ayudaprestashop.es/hooks/actionProductFormBuilderModifier)
- [`actionProductSave`](https://ayudaprestashop.es/hooks/actionProductSave)
- [`actionProductUpdate`](https://ayudaprestashop.es/hooks/actionProductUpdate)
- [`displayAdminOrderSide`](https://ayudaprestashop.es/hooks/displayAdminOrderSide)

## Guias relacionadas

- [admin/helperform](https://ayudaprestashop.es/admin/helperform)
- [admin/crud-example](https://ayudaprestashop.es/admin/crud-example)
- [trucos/product-extra-tabs](https://ayudaprestashop.es/trucos/product-extra-tabs)

## Historial de versiones

| Version | Cambio |
| --- | --- |
| 1.5 | Introducido para tabs extra en productos |
| 1.7.8 | Alternativa Symfony: actionProductFormBuilderModifier para el nuevo formulario |
| 8.0 | El nuevo formulario de producto usa actionProductFormBuilderModifier |


---

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