Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

jueves, 21 de julio de 2016

Hooks en PrestaShop

0

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í.

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.

para más info: fuente1. fuente2

Related Posts:

  • Bases de datos con PrestaShop La clase "DB" está hecho de dos clases: La clase "Db", que se puede encontrar en el /classes/db/Db.php. Con una subclase que se extiende&n… Read More
  • Arrays en prestaShop Esto es realmente una tontería, pero a la vez es una de las diferencias de otros lenguajes.Y tal vez os ayude. Primero recuerda que un array … Read More
  • Hooks en PrestaShop 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, … Read More
  • Módulos de PrestaShop V PrestaShop implementa su propio mecanismo de la traducción, a través del uso del método l (L minúscula), utilizado para encapsular string para ser tr… Read More
  • Para que un modulo se hookee en un hook Tu código esta correcto, pero simplemente no te funciona. Y te sientes muy tonto, pero más cuando veas que la solución es posicionar el hook correcta… Read More

0 comentarios:

Publicar un comentario

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)