Qué son los hooks de PrestaShop y por qué tu módulo no aparece
Subes un módulo, el panel dice que todo ha ido bien, pero en la tienda no sale nada. Te explicamos qué es un hook y por qué pasa esto.
Un hook en PrestaShop es un punto de enganche previsto dentro del sistema. Sirve para que un módulo pueda pintar contenido visual en un rincón concreto de la tienda o ejecutar una tarea cuando ocurre una acción.
Si acabas de instalar un módulo y no se ve en la web, casi siempre se debe a que no está enganchado donde debe, a que tu plantilla no tiene ese punto preparado o a que un fallo silencioso impide que cargue. En nuestra joyería hemos lidiado con esto muchas veces con nuestros propios módulos.
La comparación sencilla: enchufes y regletas
Para entender qué son los hooks de PrestaShop sin rodeos técnicos, piensa en una casa recién construida. El constructor deja cajas de enchufes repartidas por el salón, la cocina y los pasillos. Cada enchufe tiene un nombre y una función.
Tu plantilla y el núcleo de PrestaShop son las paredes de esa casa. Un módulo es una lámpara o un electrodoméstico que traes de fuera. Para que funcione y dé luz en el salón, necesitas dos cosas: que en esa pared exista un enchufe y que metas la clavija en él.
Si compras una lámpara de pie preciosa pero en esa esquina no hay enchufe en la pared, la lámpara se queda apagada en una esquina aunque funcione bien. Con los módulos pasa exactamente lo mismo.
Los dos tipos de hooks que usa tu tienda
En PrestaShop no todos los enganches sirven para pintar cosas en la pantalla. Se dividen en dos familias según lo que hacen:
- Hooks de visualización (display): son huecos visuales pensados para colocar textos, botones, banners o bloques de contenido en las páginas que ve el cliente. Su nombre casi siempre empieza por la palabra
display. - Hooks de acción (action): no pintan nada en pantalla. Son disparadores que saltan cuando ocurre un evento dentro de la tienda, como guardar un carrito o generar una venta. Suelen empezar por la palabra
action.
Por ejemplo, cuando un cliente pulsa en añadir al carrito, salta un gancho de acción llamado actionCartSave. Si tienes un módulo conectado ahí, se entera al instante de que la cesta ha cambiado y hace sus cálculos internos, sin necesidad de mostrar ningún recuadro visible en ese momento.
Los hooks más habituales y dónde se sitúan
Aunque PrestaShop tiene decenas de puntos repartidos por todo el código, la mayoría de los módulos que usas en el día a día se concentran en unos pocos lugares:
| Nombre del hook | Para qué sirve | Dónde actúa en la tienda |
|---|---|---|
displayHome |
Visual | Página de portada, en la zona central de contenidos. |
displayTop y displayNav |
Visual | Cabecera de la web (menús, barras superiores o buscador). |
displayFooter y displayFooterBefore |
Visual | Pie de página y la franja inmediatamente superior al pie. |
displayProductAdditionalInfo |
Visual | Ficha de producto, habitualmente cerca del botón de compra. |
displayProductExtraContent |
Visual | Pestañas o bloques de información adicional en la ficha. |
displayFooterProduct |
Visual | Parte inferior de la ficha de producto. |
displayShoppingCart |
Visual | Página del carrito, junto al listado de artículos. |
displayShoppingCartFooter |
Visual | Zona inferior de la página del carrito. |
displayBeforeBodyClosingTag |
Visual | Al final de todas las páginas, justo antes de cerrar la etiqueta body. |
actionValidateOrder |
Acción | Se ejecuta justo en el instante en que se confirma un pedido. |
Dónde ver los ganchos y cómo ordenar lo que muestran
Para gestionar qué módulos están conectados en cada sitio, tienes una pantalla específica en el panel de control. La encuentras navegando a Diseño > Posiciones.
En ese apartado ves un listado de todos los ganchos registrados en tu tienda y los módulos que cuelgan de cada uno. Además de verlos, puedes cambiar el orden relativo arrastrándolos hacia arriba o hacia abajo. Si tienes dos avisos diferentes enganchados a displayProductAdditionalInfo, el que esté colocado más arriba en esa lista saldrá antes en la pantalla de tus clientes.
Esta pantalla de posiciones de PrestaShop también te permite desenganchar un módulo de un sitio concreto si no quieres que aparezca ahí, sin necesidad de desinstalar el módulo por completo.
Por qué tu módulo no aparece aunque esté instalado
Has seguido todos los pasos para instalar un módulo en PrestaShop 8 sin romper la tienda, el panel confirma la instalación con un mensaje verde, vas a la portada o a la ficha del producto y no hay rastro de él. Este problema de que un módulo no aparezca en PrestaShop suele tener una de estas cuatro causas:
1. La caché te está enseñando la versión anterior
PrestaShop guarda copias compiladas de las plantillas para cargar más rápido. Si añades un elemento nuevo, muchas veces el sistema sigue sirviendo la página vieja que tiene guardada en memoria. El primer paso siempre debe ser ir a Parámetros avanzados > Rendimiento y pulsar sobre el botón de borrar caché.
2. Tu plantilla no tiene ese gancho escrito
Este es un clásico. El desarrollador del módulo dio por hecho que tu tema incluía, por ejemplo, el gancho displayFooterBefore. Pero quien diseñó tu plantilla decidió prescindir de él o lo llamó de otra manera en sus ficheros de plantilla. El módulo está bien configurado y esperando en su sitio, pero la plantilla nunca llama a ese punto, por lo que nunca se muestra.
3. No se ha registrado en el hook durante la instalación
A veces, por un fallo puntual en el proceso de instalación, el módulo no llega a fijarse a la posición correspondiente en la base de datos. En Diseño > Posiciones puedes buscar el gancho donde debería salir. Si el módulo no aparece en el listado de ese bloque, puedes utilizar la opción de trasladar o insertar el módulo en ese gancho de forma manual.
4. Hay un error interno oculto por el modo producción
Esto lo aprendimos nosotros montando entornos de prueba en Joyería HAGO y durante las pruebas de PluginPilot: en PrestaShop 8, cuando la tienda está en modo normal de producción, el sistema silencia los fallos que se producen dentro de los ganchos. Si el módulo tiene un error de código o es incompatible con tu versión de PHP, no te soltará una pantalla rota: simplemente no pinta nada y continúa cargando el resto de la web. En apariencia parece que el módulo no hace nada, pero en realidad ha fallado por dentro.
Si sospechas que se trata de una avería interna, puedes revisar nuestra guía sobre qué hacer ante un error 500 o pantalla en blanco tras instalar un módulo.
Qué revisar primero si no consigues verlo
Si te encuentras atascado con un bloque que se resiste a salir, sigue este orden para localizar el fallo sin dar palos de ciego:
- Limpia la caché del sistema: entra en Parámetros avanzados > Rendimiento y vacía la caché con el botón superior.
- Comprueba si está enganchado: ve a Diseño > Posiciones, busca el hook donde promete salir el módulo y confirma que está en la lista.
- Prueba a restablecer: desde Módulos > Gestor de módulos, busca el módulo, despliega su menú de acciones y pulsa en "Restablecer". Esta acción desinstala y vuelve a instalar el módulo desde cero, rehaciendo sus enganches originales.
- Activa el modo depuración de forma temporal: ve a Parámetros avanzados > Rendimiento, activa el modo depuración y recarga la página de la tienda donde debería salir el contenido. Si había un error silencioso dentro del hook, PrestaShop te mostrará exactamente qué línea o qué archivo está fallando en lugar de quedarse en blanco.