Crear Posiciones de Hooks en módulo Prestashop
Crear Posiciones de Hooks en módulo Prestashop. En ocasiones cuando creamos módulos en CMS Prestashop queremos asignar también a una nueva posición (hook) personalizado que no existe en nuestra actual plantilla.
¿Cuál sería la solución para solucionar Hook personalizados?
Para solucionar este inconveniente ,podemos incluir la posición en el módulo que vamos a instalar y automáticamente Prestashop se encargará de hacer todo el proceso.
Nota:
Una vez declarado el Hook debemos de reiniciar el módulo para que agregue a la base de datos el nombre del Hook.
Crear Posiciones de Hooks en módulo Prestashop
En el fichero php principal de nuestro modulo, tendremos que crear y/o añadir la función que va a crear la nueva posición para que el módulo se posicione en ella. Sin embargo, recordemos que podemos agregar consultas SQL o textos personalizados.
public function hookDisplayMiniatura($params)
{
// Código a mostrar ó consulta SQL desde MySQL.
return 'Texto en mi nueva posición Miniatura';
}
Configurar la función Install()
La función install()
de nuestro módulo debemos de configurar o incluir el código que hará que se registre el hook en la base de datos a la vez que se instala el módulo. Además, si el módulo ya estuviera instalado se deberá reinicializar el módulo.
public function install() {
return parent::install() && $this->registerHook('displayMiniatura');
}
Registrar Hook de manera manual Prestashop
Recordemos que la función $this->registerHook()
se encarga de insertar el hook en la tabla ps_hook
. Por lo tanto, podemos hacerlo de forma manual nosotros mismos. Sin embargo, no se olviden que el prefijo puede variar según la instalación de Prestashop.
INSERT INTO `ps_hook` (`name`, `title`, `description`) VALUES ('displayMiniatura', 'Este es el nombre de mi Hook', 'Descripcion');
-- Podemos añadir el campo `position` con valor = 1 para que así esté habilitado por defecto desde el admin.
Incluir Hook
en la posición deseada en la plantilla .tpl
Para poder visualizar la personalización de nuestro nuevo hook debemos de agregar el siguiente código dentro de nuestro fichero .tpl
y se visualizarán los módulos de esta posición.
Para este ejemplo usaremos un hook llamado displayMiniatura
, veamos el ejemplo.
{hook h='displayMiniatura'}
// También podemos añadir el nombre de un módulo en el HOOK creado.
{hook h='displayMiniatura' mod='nombre_modulo'}
Pasar variable por un Hook
En algunas ocasiones se requiere pasar una variable por ejemplo el id_product
a través de un módulo usando un hook en un fichero .tpl
{hook h='displayMiniatura' mod='modvas' product={$product.id_product}}
Error al visualizar hook en el administrador
Hay varios factores por lo que un hook no es visible en el panel administrador:
- Primero: Campo position en cero.- Tendremos que entrar en la base de datos de nuestro Prestashop y dirigirnos a la tabla `ps_hook` según el prefijo de nuestra instalación. En ella buscaremos nuestra posición creada (hook) y observamos que el campo `position` deba estar en 1. Si no es así, lo modificamos sin problema.
- Segundo: Modulo sin hook en base de datos.- Si hemos programado desde un módulo instalado debemos de reiniciarlo para que el módulo cree el hook necesario para que sea visible.
Gestionar esta posición para otros módulos
Para que un módulo pueda asignarse a una determinada posición, ésta debe de estar definida en su código y/o funciones. Caso contrario aparecerá un mensaje de error. Por lo que habrá que entrar en el fichero .php del módulo ya existente y añadir la función:
public function hookDisplayMiniatura($params) {
// Código a mostrar ó consulta SQL desde MySQL.
return 'Texto en mi nueva posición Miniatura';
}
Conclusiones y recomendaciones
Gestionar módulos y hook en Prestashop es muy fácil, solo debemos de ver estos 3 pasos:
- Crear Posiciones de Hook en módulo Prestashop
- Configurar la función Install()
- Incluir Hook en la posición deseada en la plantilla .tpl
Espero que esta breve explicación en posiciones de hook y módulos les ayude en sus proyectos de Prestashop