Muchas veces los módulos en PrestaShop vienen preparados sólo para posicionarlos en algunas partes de nuestra tienda y nos acarrea muchos problemas ya que el cliente se empeña en tenerlo en una zona para la que el módulo no está preparado o configurado. Por eso quiero explicar las dos maneras que hay para añadir la posición o modificar módulo a un hook diferente en nuestra tienda PrestaShop.
¿Cómo podemos añadir un módulo a un hook diferente?
Se nos pueden dar 2 casos a la hora de querer modificar un hook de un módulo a otra posición de PrestaShop:
- El módulo ya está preparado para aparecer en otro hook diferente al que viene por defecto configurado.
- El módulo no tiene habilitado el hook al que nosotros queremos cambiarlo.
Cambiar módulo de hook (Prestashop 1.5)
Cuando instalamos un módulo, por defecto puede que esté posicionado en la columna izquierda, pero nosotros queremos posicionarlo en la columna derecha. Como en este caso el módulo viene preparado para ponerlo en la columna derecha (hookRightColumn), vamos a explicar los pasos a seguir para poderlo modificar, ya que PrestaShop nos proporciona una manera muy sencilla de realizarlo:
- Instalamos el módulo que queramos para nuestra tienda el cual se ve en un bloque especifico, por ejemplo en la parte izquierda (hookLeftColumn).
- Ahora vamos a la tienda y vemos como se visualiza sólo en la parte izquierda de la tienda.
- El bloque se puede instalar en la parte derecha ya que está implementado en el módulo (viene preparado para ponerlo en el TOP, LEFT y RIGHT). Eso sí no podremos cambiarlo a ningún otro sitio como puede ser el FOOTER a no ser que optemos por el caso 2 que explicaremos después.
- Para cambiar un bloque de sitio en PrestaShop, nos vamos al panel de Administración/Módulos/Posiciones/ y hacemos clic en el botón «Trasladar un módulo».
- Ahora tendremos que seleccionar el Módulo que queremos cambiar de zona, y el Hook donde vamos a posicionarlo. El campo excepciones no lo rellenamos:
- Ahora que hemos hecho el cambio podremos ver el bloque en la nueva zona que hemos configurado, siempre y cuando esté disponible ese hook para ese módulo, en caso contrario, nos aparecerá este mensaje: «este módulo ya está copiado en este hook«. En este caso, ir al paso 2.
Añadir módulo a un nuevo Hook (Prestashop 1.5)
En el caso en el que el módulo no venga configurado para que aparezca en la zona que nosotros queremos, tendríamos que diferencias dos partes, una en la que el cambio no afecta al diseño y no descoloca ningún otro elemento de la tienda y otra en la que el cambio crea descuadres en el diseño.
- Para el caso en el que no interfiere en el diseño de la tienda:
- Editamos el archivo .php del módulo (por ejemplo para el módulo blocknewproducts sería “blocknewproducts.php”). En este caso no viene la opción de poder colocarlo en el Footer. Así que lo abrimos y vemos el siguiente código:
public function hookRightColumn($params) { $newProducts = Product::getNewProducts((int)($params['cookie']->id_lang), 0, (int)(Configuration::get('NEW_PRODUCTS_NBR'))); if (!$newProducts && !Configuration::get('PS_BLOCK_NEWPRODUCTS_DISPLAY')) return; $this->smarty->assign(array( 'new_products' => $newProducts, 'mediumSize' => Image::getSize('medium_default'), )); return $this->display(__FILE__, 'blocknewproducts.tpl'); }
- Añadimos el siguiente código:
public function hookFooter($params) { return $this->hookFooter($params); }
- Una vez hemos modificado el archivo, tenemos que TRASLADAR el módulo de la misma manera que hemos hecho en el paso 1, ya que ahora si que estará preparado para el cambio.
- Editamos el archivo .php del módulo (por ejemplo para el módulo blocknewproducts sería “blocknewproducts.php”). En este caso no viene la opción de poder colocarlo en el Footer. Así que lo abrimos y vemos el siguiente código:
- Para el caso en el que el cambio interfiere en el diseño de la tienda, habría que crear un archivo .TPL:
- Creamos el archivo .TPL con la nueva maquetación (por ejemplo, nuestronuevoarchivo.tpl)
- Volvemos al archivo .PHP del módulo (en el ejemplo blocknewproducts.php) e indicamos que vamos a usar esta «plantilla» (archivo .TPL). Si vamos al código, tendríamos que cambiar lo siguiente:
return $this->display(__FILE__, 'blocknewproducts.tpl');
Por esto:
return $this->display(__FILE__, 'nuestronuevoarchivo.tpl');
Explicado puede parecer algo complicado, pero os aseguro que no lo es, el tema es hacer el primero y los siguientes veréis como no tendréis problemas.
Próximamente veremos cómo llevar el mantenimiento del stock y del almacén, imprescindible para llevar una buena gestión avanzada de stock en prestahop.