DISPLAY BO Desde 1.5

displayAdminProductsExtra

~3 min de lectura

#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.

📍
Disparado por
  • AdminProductsControllerCore::initFormModules()controllers/admin/AdminProductsController.php

#Parametros

Nombre Tipo Requerido Descripcion
$id_product int Si ID del producto que se esta editando
Retorno
string HTML del contenido de la pestaña extra

#Ejemplo de codigo

mymodule.php
php
public function install()
{
    return parent::install()
        && $this->registerHook('displayAdminProductsExtra');
}
mymodule.php
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.

#Relacionados

#Historial de versiones

Version PSCambio
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
Descargar en Markdown Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.