En este tutorial vamos a explicar los pasos que hay que realizar para crear y utilizar un nuevo ‘Hook‘ en una tienda virtual desarrollada con Pretashop.
Insertar el nuevo Hook en la base de datos
Para ello debemos ejecutar manualmente la siguiente sentencia SQL:
(SQL |copy code |?
1 INSERT INTO <code>ps_hook
name
, title
, description
)VALUES (‘menuTopHook’, ‘Menu Top Hook’, ‘Menu horizontal top’);
¿Cómo se utiliza el nuevo hook en un módulo?
Para utilizar el nuevo ‘Hook’ en un módulo Prestashop debemos editar la clase del módulo y añadir un método público y estático que referencie al nuevo ‘Hook’.
La nomenclatura de estos métodos comienza por la palabra ‘hook’ seguido del nombre que se haya configurado para le nuevo hook.
En este ejemplo deberemos añadir el siguiente método:
PHP |copy code |?
1 public function hookMenuTopHook($params)2 {
3 }
Resgistrar el nuevo Hook dentro de la congifuración del módulo
Un módulo debe definir todos los hooks en los que puede situarse. Por tanto, ahora deberemos indicar que a los que estuviesen ya configurados también le estamos añadiendo el nuevo. Esto se hace con el siguiente código:
PHP |copy code |?
1 public function install()2 {
3 return parent::install() && $this->registerHook('MenuTopHook');4 }
Llamadas a un Hook en Prestashop
Llamada directa al Hook
Ejecutamos la llamada directa al ‘Hook’ pasando a la función ‘hookExec‘ el nombre con el que se ha creado el ‘Hook’ y una matriz de parámetros de configuración:
PHP |copy code |?
1 $params = array(2 'parametro_1' => 'valor_1',3 'parametro_2' => 'valor_2',4 );5 Module::hookExec('MenuTopHook', $params);
Crear un método de acceso directo
En este punto crearemos un método que lo utilizaremos de acceso directo. Así cada vez que llamemos al ‘Hook’ únicamente tendremos que hacer una llamada a este método, y nos quedará un código más limpio.
El método que hay que crear debe ser como el siguiente:
PHP |copy code |?
01 class HookCore extends ObjectModel02 {
03 // resto de hooks
04 static public function actualizarMenu($menu)05 {
06 $params = array('boton' => $boton);07 return Module::hookExec('actualizarMenu', $boton);08 }
09 // resto de hooks
10 }
Ahora desde el núclero de Prestashop podremos realizar llamadas a este ‘Hook’ utilizando una línea como la siguiente:
1 Hook::actualizarMenu(new Boton('miBoton'));
Deja tu comentario