ESTO ES UNA REVISIÓN DEL ANTERIOR TUTORIAL PARA 1.4
Si estáis modificando un Theme de Prestashop en Prestashop 1.5 y necesitáis que uno o más módulos se puedan localizar en un nuevo espacio en el que no existan ganchos o anclajes donde ponerlos, sigue este tutorial. Hay que indicarle a nuestra Base de Datos y programa que existe un nuevo lugar donde pueden ir colocados los módulos de nuestra tienda. En esta mini-guía os mostraré un poco como hacerlo.
Aquí os dejo el video-tutorial que he subido a YouTube para aclarar algo más las cosas. Espero que os guste:
1. – Crear el nuevo Hook en nuestra Base de Datos
Lo primero que debemos hacer es crear una nueva entrada para nuestro hook en la base de datos. Para ello, esta vez gastaremos el phpMyAdmin. Hay que introducir la información del hook en las tablas ps_hook y ps_hook_alias (Ver el vídeo para ver cómo se hace)
2.- Especificar nuestro nuevo Hook en el código de prestashop
Hay que modificar el archivo ./clases/controller/FrontController.php. Buscaremos esta parte de código (sobre la línea 448) y añadiremos lo que está en rojo:
self::$smarty->assign(array(
‘HOOK_HEADER’ => Module::hookExec(‘header’),
‘HOOK_TOP’ => Module::hookExec(‘top’),
‘HOOK_NUEVOHOOK’ => Module::hookExec(‘DisplayNuevoHook’),
‘HOOK_LEFT_COLUMN’ => Module::hookExec(‘leftColumn’)
));
Hay que tener en cuenta que ‘HOOK_NUEVOHOOK’ será el nombre que después gastaremos en nuestros archivos .tpl. Da igual el nombre que le pongamos a esta, tan solo debe estar formado por ‘HOOK_+loquequieras’. Si quieres mantener la misma coherencia del resto de hooks, deberías ponerle el mismo nombre de la BD pero todo en mayúsculas. Ahora, eso si, el nombre dentro de la función debe ser exactamente el mismo que le hayáis puesto en la BD como alias. Eso es, en mi caso Module::hookExec(‘DisplayNuevoHokk’).
Repito: {$HOOK_NUEVOHOOK} es el formato exacto que utilizarás en los .tpl para incluir el contenido del nuevo hook donde corresponda, y NO TIENE PORQUE ser igual que el nombre en la tabla ps_hooks (‘NuevoHook’), pero por homogeneidad y legibilidad recomiendo usar el mismo nombre pero en mayúsculas.
3.- Añadir la posibilidad de “engancharse” al nuevo Hook al módulo que queramos.
Para el ejemplo, modificaremos el módulo de Idiomas. Para que el módulo de idiomas pueda utilizar el nuevo hook debemos darle la funcionalidad. Para ello debemos modificar el código del archivo /modules/blocklanguages/blocklanguages.php. Buscamos la siguiente función:
function hookTop($params)
{
global $smarty;
$languages = Language::getLanguages();
[…]
}
Justo debajo de esa función, debéis añadir una nueva función, pero ésta hará referencia al nuevo hook (aquí si es importante que el nombre sea literalmente el que se haya escrito en la tabla de hooks (NuevoHook en este caso)
function hookNuevoHook($params) { return $this->hookTop( $params ); }
De esta forma, le daremos la funcionalidad necesaria para que el BO de Prestashop nos deje mover el módulo al que le acabamos de dar funcionalidad al hook que hemos creado.
*Nota: Aunque para ejemplarizar hemos utilizado “function hookTop(…” del módulo de Idiomas, hay que tener en cuenta que se puede hacer exactamente lo mismo con cualquier módulo. Lo único es que dentro de la función nueva para nuestro hook debemos utilizar otra que ya exista en el archivo que estamos modificando, da igual que sea hookTop, que cualquier otra.
Espero que os haya sido de ayuda al minitutorial. Si tenéis alguna pregunta, podéis utilizar el contacto de mi web y tran pronto como me fuera posible os contestaría.