Hooks en PrestaShop
PrestaShop es una de las plataformas más populares para crear tiendas online y destaca por su capacidad de extensión permitiendo a programadores experimentados desarrollar módulos o complementos con el objetivo de incrementar la funcionalidad.
El desarrollo de estos módulos implica enganchar sus acciones o presentación en algún lugar del código o parte visual.
Esta manera de enganchar funcionalidades a la base se puede hacer a través de los ganchos o hooks.
Los kooks son eventos desencadenados que PrestaShop tiene distribuidos en varias partes del código con el objetivo principal de ampliar las funciones de la tienda.
Estos hooks se activan en temas, controladores, clases Legacy y modernas.
Los desarrolladores pueden conectar su código a diferentes hooks mediante módulos para ampliar las funcionalidades.
Los hooks se pueden gestionar desde el back office en la pestaña (Diseño > Posiciones).
En esta página, el administrador puede encontrar una lista de kooks y los módulos que hay dentro.
Tipos de hooks
En el momento de crear módulos, se puede llegar a trabajar con dos tipos de hooks: hooks de visualización y hooks de acción.
Los hooks de visualización se utilizan para mostrar contenido en una ubicación deseada de la página.
Por ejemplo, un banner en la página principal. Al utilizar el nombre del hook de visualización, como «displayHome», puedes agregar el módulo en el contenido de la página principal.
Los hooks de acción se utilizan para desencadenar una acción específica y funcionan como filtros en un momento determinado sobre algunos datos transmitidos como parámetros.
Por ejemplo, al utilizar el nombre del hook de acción, como «actionProductSave», puedes ejecutar tu código después de que se guarde un producto.
¿Cómo usar un hook en un módulo?
Para utilizar hooks en los módulos, primero debemos crear un método para el hook:
hook[NombreDelHook]($params) - hook y nombre del hook en CamelCase
En el caso del ejemplo en el que deseamos mostrar un banner en la página de inicio, la declaración de la función sería como sigue:
public function hookDisplayHome($params)
{
}
Este método se activará cuando se ejecute el hook «displayHome».
Un detalle que no debes olvidar es registrar tu módulo en el hook a través del método de instalación.
Debes registrar el hook con el método $this->registerHook(hook) en el método install() para enganchar el módulo en el hook.
Una vez completado estos 2 pasos, para ejecutar el hook, puedes hacerlo desde un template simplemente incluyendo {hook h=’nombre_del_hook’} directamente en el archivo .tpl o .twig.
También puedes ejecutar hooks desde controladores utilizando el controlador Legacy con el método Hook::exec($nombre_hook, $argumentos_hook) o utilizando un controlador moderno de Symfony con el método $this->dispatchHook($nombre_hook, $params=array()).
Esta forma de incluir un hook en la plantilla o controlador es bastante común cuando necesitas crear un nuevo gancho en una posición en la que no hay nada para enganchar tu módulo.
Para obtener más información, consulta la documentación de los Hooks.
Es importante que sepas y te familiarices con ello que, PrestaShop tiene sus propios hooks en su base.
Una lista completa de los hooks básicos está disponible en la documentación de Devdocs.
Deja una respuesta