DISPLAY
FO
Desde 1.5
displayProductButtons
~3 min de lectura
#Descripcion
Añade botones o contenido junto al boton de 'Añadir al carrito' en la pagina de producto. Es el hook ideal para funcionalidades como 'Añadir a la lista de deseos', 'Comparar productos', 'Compartir en redes sociales', 'Aviso de disponibilidad' o cualquier accion relacionada con el producto.
Disparado por
-
ProductControllerCore::initContent()— controllers/front/ProductController.php
#Parametros
| Nombre | Tipo | Requerido | Descripcion |
|---|---|---|---|
| $product | array | Si | Array con datos del producto actual (id_product, name, price, etc.) |
Retorno
string
HTML con los botones o acciones adicionales
#Ejemplo de codigo
mymodule.php
php
public function install()
{
return parent::install()
&& $this->registerHook('displayProductButtons');
}
mymodule.php
php
/**
* Hook displayProductButtons — Boton de lista de deseos
*/
public function hookDisplayProductButtons($params)
{
$product = $params['product'];
$id_product = (int)($product['id_product'] ?? $product->id ?? 0);
if (!$id_product) {
return '';
}
// Verificar si el producto ya esta en la wishlist del cliente
$inWishlist = false;
if ($this->context->customer->isLogged()) {
$inWishlist = Db::getInstance()->getValue(
'SELECT COUNT(*) FROM `' . _DB_PREFIX_ . 'my_wishlist`
WHERE id_customer = ' . (int)$this->context->customer->id . '
AND id_product = ' . $id_product
);
}
$this->context->smarty->assign([
'id_product' => $id_product,
'in_wishlist' => (bool)$inWishlist,
'is_logged' => $this->context->customer->isLogged(),
'wishlist_url' => $this->context->link->getModuleLink(
$this->name, 'toggle', ['id_product' => $id_product]
),
]);
return $this->display(__FILE__, 'views/templates/hook/product-button.tpl');
}
template.tpl
smarty
{hook h='displayProductButtons' product=$product}
#Notas y gotchas
- ⚠️ El parametro `product` es un array en PS 1.7+, no un objeto Product. Usa `$product['id_product']`.
- ⚠️ En PS 1.6, el parametro puede ser un objeto Product. Para compatibilidad: `$product['id_product'] ?? $product->id`.
- ⚠️ El hook se ejecuta DENTRO del formulario de 'añadir al carrito', por lo que puedes añadir inputs hidden.
- ⚠️ Para botones con AJAX, asegurate de registrar tus JS con `actionFrontControllerSetMedia`.
- ⚠️ Tambien existe `displayProductAdditionalInfo` que se muestra debajo del boton de añadir al carrito.
#Relacionados
#Historial de versiones
| Version PS | Cambio |
|---|---|
| 1.5 | Introducido para botones junto al carrito |
| 1.7 | El parametro product cambia de objeto a array |
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.