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