Como crear y registrar un nuevo hook desde un módulo en PrestaShop
En este artículo vas a descubrir como crear y registrar un nuevo hook en PrestaShop donde poder enganchar módulos.
Los módulos en PrestaShop son la clave y el sustento que hacen que la plataforma PrestaShop sea tan potente y permita poder construir cualquier modelo de negocio o tienda en Internet.
PrestaShop dispone de muchos hooks para enganchar módulos. Ver lista de hooks en PrestaShop 1.7
En algunos casos, como por ejemplo, en la página de categoría, no hay enganches para agregar más información mediante los módulos.
En estos casos, puede resultar interesante crear un nuevo hook o posición para enganchar módulos.
Si eres desarrollador de módulos y estas buscando como crear un nuevo hook o posición que permita agregar más información a una tienda este es tu tutorial.
Aquí te explicaré como crear y registrar un nuevo hook en PrestaShop desde un módulo.
Creación y registro del nuevo Hook
En tu módulo puedes crear una función nuevo que te permita crear el hook o posición personalizada.
En este caso, quiero agregar un hook de visualización. También existe la posibilidad de agregar un hook de acción.
Con el siguiente código lo puedes conseguir:
public function createHook($name)
{
$hook = Hook::getIdByName($name);
if (!$hook) {
$hook = new Hook();
$hook->name = $name;
$hook->save();
}
return $this->registerHook($name);
}
Esta función recibe como parámetro el nombre del nuevo hook y si no existe lo crea.
Retorna verdadero o false en función de si el módulo se ha registrado en el nuevo hook o no.
En el método install() de tu módulo puedes agregar la llamada a la creación del nuevo hook.
Por ejemplo:
public function install()
{
return parent::install() && $this->createHook('displayTopCategory');
}
En este caso, en la instalación del módulo estoy llamando método install() que trae PrestaShop por defecto y además también estoy creando el nuevo hook o posición.
Código de enganche a agregar en la plantilla
Este nuevo hook o posición se puede pensar para agregar en la plantilla de la categoría.
En el tema activo puedes agregar allí donde desees mostrar la información que visualizará este hook lo siguiente:
{hook h='displayTopCategory'}
Desinstalación del nuevo hook
Para completar este asunto, en la función uninstall() del módulo puedes eliminar el registro del nuevo hook de la siguiente forma:
public function uninstall()
{
if (!parent::uninstall() || !$this->unregisterHook('displayTopCategory')) {
return false;
}
return true;
}
Conclusión
En este artículo has podido ver una forma bastante optimizada para crear y eliminar un nuevo hook.
Seguramente, existen otros métodos pero este es el que suelo utilizar desde hace muchos años. Si todavía funciona, debe ser un método muy correcto.
¿Te ha servido este tutorial? No dudes en enviar tu comentario o enviar tu valoración.
¿Sabes algún método mejor que permita crear y registrar un nuevo hook en PrestaShop? Envía tu comentario y háznoslo saber.
José tengo una pregunta. Instalé una plantilla en Mi prestashop y anda bien, cuando entro al dashboard de clientes se ve bien, pero si agrego un módulo nuevo que requiere crear un enlace allí, se daña el diseño. Por ejemplo, compré un módulo de Subastas y al activarlo se vuelve nada el dashboard del cliente.
Hola,
Gracias por tu mensaje.
Deberás preguntar al desarrollar del módulo de subastas en concreto.
Si el desarrollador somos nosotros mismos, deberás enviar tu petición indicando tu número de pedido al centro de soporte técnico situado en:
https://www.jamodules.com/prestashop-addons/es/soporte
Seguramente puedan ayudarte.
Jose Aguilar,
Saludos
Hola,
Necesito crear una página nueva dentro de mi theme, donde permanezca el header y footer del theme que estoy usando, pero en el área de contenido esté vacía para crear y poner ahí mi propio hook.
Lo anterior dado que estoy construyendo un módulo propio que debe ir exclusivamente en una página en blanco sin contenido que pueda distraer al usuario.
¿Cómo puedo hacer esto?
Te lo agradezco.
Hola,
Tienes que hacer un controlador dentro de tu módulo que represente esa página para tu módulo.
Saludos
[…] Como crear y registrar un nuevo hook desde un módulo en PrestaShop […]