Los hooks representan puntos definidos del código que se puede utilizar para ejecutar las funciones de su propio módulo. O, dicho de otro modo, es un punto donde los módulos asocian su código a ciertos eventos.
Estos eventos vienen orquestados por el núcleo de prestashop (controladores y clases de entidad). Técnicamente, el código de prestashop llama vía Hook::exec('nombre_del_hook', parametros) en ciertos momentos importantes a todos los módulos que están suscritos a ese nombre_del_hook (siguiendo un orden).
Puedes ver las llamadas aquí.
Puedes ver las llamadas aquí.
Un ejemplo de ejecución del hook:
public function hookLeftColumn($params)
{
/* Code to be executed */
}
Esta función permite que el módulo se enganche a la columna de la izquierda, y la ejecución de código adecuado a partir de ahí, ya sea algo para mostrar al usuario, o agrupando estas cosas. En cualquier caso, siempre se tendrá que ejecutar una función hookSomewhere para ejecutar el código del módulo en un lugar específico.
Visual Hooks VS Action Hooks
Los primeros se utilizan generalmente para mostrar el contenido de su sitio web, y proporcionar una retroalimentación visual para el cliente. Mientras que hay, de hecho, hook visuales de administración, como la que se utiliza para mostrar las nuevas pestañas en la página de estadísticas, la mayoría de ellos están definidas por los controladores en la oficina principal, y asignados a las variables a ser ejecutado dentro de la plantilla. Un ejemplo de esto es la hookLeftColumn.
los hooks de acción son, por otro lado, únicamente código de ejecución, sin llegar a mostrar el contenido. Se colocan tanto en archivos de clase y de controlador, y puede ser útil cuando necesitamos recopilar los datos arrojados por una clase, manipularlo. Como su nombre indica, se presenta cuando la acción se lleva a cabo específicamente.
Un ejemplo de un hook de acción: supongamos que tenemos un módulo de "mejores ventas", y se utiliza el almacenamiento en caché de base de datos para optimizar el rendimiento. Se recupera más vendidos a partir de una versión en caché de la lista producto creado de vez en cuando. Pues bien, esta vez el cuando se puede establecer de dos formas: la forma tradicional es la creación de una tarea programada, y actualizar la lista una vez cada hora o día, más o menos; la otra forma sería usando hooks. Podríamos conectar el módulo a "NewOrder", que es un hook que se ejecuta cuando se realiza un nuevo pedido. De esta manera, no necesitan recuperar todos los datos de los productos cada vez que la página se recarga, lo que aumenta la velocidad de nuestro sitio.
En la version 1.5 se introdujo una nomenclatura consistente en que el hook empiece por action o display de forma que de un vistazo se distingue entre ambos tipos. Aún así hay compatibilidad con los nombre "antiguos".
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
La documentación es realmente pobre, es ridiculo que no haya una explicación de la API prestashop para un aspecto tan importante como éste, cuando se ejecuta el hook, que recibe como parámetros, en caso de ser de display donde se muestra, etc.
Es importante, antes de ponerlo en acción, que el modulo este registrado en la base de datos del prestashop.
¿En una instalación por defecto de prestashop 1.6.0.14 cuantos hooks hay?
Pues puedes saberlo con la siguiente consulta:
SELECT h.id_hook,h.name,a.alias,h.title,h.description
FROM `ps_hook` h LEFT JOIN `ps_hook_alias` a
ON (h.name=a.name)
WHERE 1
Puedes ver los resultados aquí
Esta tabla ira creciendo a medida que instalemos módulos ya que al registrar un módulo en un hook, si éste no existe se creara. Posteriormente una vez exista en la tabla se podrá hacer de él en el panel del backofice de posiciones de módulo.
0 comentarios:
Publicar un comentario