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.

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(6 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

5 respuestas a “Como crear y registrar un nuevo hook desde un módulo en PrestaShop”

  1. Farid dice:

    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.

  2. Juan Felipe dice:

    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.

  3. […] Como crear y registrar un nuevo hook desde un módulo en PrestaShop […]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre