Ocultar módulo por página de contenidos en Prestashop 1.7

Pequeño tutorial, que servirá para ocultar un “módulo especifico” en una determinada página de contenidos (recuerdo que hablamos de las páginas que creamos en la pestaña Diseño => Páginas)

Normalmente, en la pestaña Diseño => Posiciones, podemos jugar con las excepciones y seleccionar en que páginas de la tienda no queremos que se vea.

Por ejemplo, si vamos al hook => displayTop (buscamos el menú) y pulsamos en modificar

Modificar

Vemos un formulario, donde entre otras cuestiones, podemos seleccionar en que sitios no queremos mostrar el módulo.

Excepciones
Excepciones

Esto es algo que ya conocemos todos, pero el problema es que no permite hacerlo de forma específica, solo de forma genérica por secciones.

¿Y si nos interesa, ocultar el menú horizontal en la página de contenido (cms) con ID 6, pero que se vea en el resto?

Menú horizontal en Prestashop

Podemos ir fichero => /modules/ps_mainmenu/ps_mainmenu.php

Y dentro de la función =>  renderWidget($hookName, array $configuration)

Añadimos:

Para obtener el id de la página de contenidos


$id_cms = Tools::getValue('id_cms');

De este modo, obtenemos el valor del parámetro id_cms de la URL actual.

Para cortar la ejecución de la visualización del módulo en la página con contenidos con “ID 6” añadimos:


if ($id_cms==6) return;

Nos mostrar menú horizontal en una página de contenidos especifica

No teniendo nada que ver con el artículo (recuerdo la guía sobre los widget en Prestashop 1.7 de hace unos años).

Si vuestro módulo muestra un contenido especifico por hook, lo que hemos añadido debería ir en dicho hook (valga la redundancia).

Evidentemente, recuerdo que se debe evitar la edición directa la clase del módulo, y lo recomendable es crear un override (/override/modules/ps_mainmenu/)

Esto es solo un ejemplo rápido, y por consiguiente puede contener erratas.

Documento creado bajo Prestashop 1.7.4.2

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *