PS PrestaShop Principiante

DF Recently Viewed — Productos vistos recientemente (PrestaShop 8/9)

Instalar y configurar el bloque de productos vistos recientemente: historial multidispositivo, insignias de bajada de precio, renderizado compatible con caché, analítica y RGPD.

Actualizado Versión del módulo 1.0.1

Presentación

DF Recently Viewed (dfrecentlyviewed) muestra los productos vistos recientemente por sus visitantes, pero con una arquitectura pensada para la conversión: el historial se guarda en el servidor, se fusiona en la cuenta de cliente al iniciar sesión, se renderiza por AJAX para seguir siendo exacto detrás de una caché de página y se enriquece con insignias de bajada de precio. Un panel analítico completa el conjunto con una tasa de conversión vista hacia compra.

Requisitos

  • PrestaShop 8.0 a 9.x
  • PHP 7.4 a 8.3
  • Sin dependencias externas (ni Composer, ni jQuery, ni librería de carrusel)

Instalación

  1. En el back-office, abra Módulos > Gestor de módulos.
  2. Haga clic en Subir un módulo y suelte el archivo dfrecentlyviewed.zip.
  3. Haga clic en Instalar. El módulo crea su tabla, registra sus hooks y añade una pestaña Catálogo > Estadísticas de productos vistos.
  4. Haga clic en Configurar para acceder a los ajustes.

El módulo funciona desde la instalación con valores por defecto sensatos: 8 productos, carrusel, renderizado AJAX, insignias de bajada de precio activadas, retención de 90 días.

Configuración

Pestaña Visualización

  • Título del bloque — traducible en cada uno de sus idiomas.
  • Número de productos — de 1 a 24 productos mostrados en el bloque.
  • Diseño en carrusel — activado: carrusel horizontal con flechas de navegación. Desactivado: cuadrícula responsive.
  • Mostrar en las fichas de producto — hook displayFooterProduct.
  • Mostrar en la página de inicio — hook displayHome.
  • Mostrar en la página del carrito — hook displayShoppingCartFooter.
  • Mostrar el enlace «borrar mi historial» — recomendado por transparencia RGPD.

Pestaña Comportamiento inteligente

  • Excluir el producto mostrado actualmente — evita recomendar la ficha ya en pantalla.
  • Ocultar los productos sin stock — el filtro tiene en cuenta los pedidos anticipados autorizados.
  • Ocultar los productos ya en el carrito — el carrito se recalcula en el servidor, nunca desde la página en caché.
  • Insignias de bajada de precio — muestra una insignia «-X %» cuando el precio ha bajado desde la última consulta del visitante.
  • Renderizado AJAX (compatible con caché) — muy recomendado, vea la sección dedicada más abajo.
  • Retención del historial (días) — de 1 a 730 días. Las vistas más antiguas se purgan automáticamente.

Compatibilidad con la caché de página completa

En una tienda con Varnish, Cloudflare, LiteSpeed Cache o un CDN, un bloque personalizado renderizado en el servidor se almacena en caché junto con la página: el siguiente visitante ve el historial de otra persona, o un bloque vacío.

El modo Renderizado AJAX, activado por defecto, resuelve el problema: el bloque se inyecta después del renderizado de la página, mediante una petición al controlador front del módulo. El seguimiento de la vista de producto se envía como beacon no bloqueante, que también funciona cuando la página proviene de la caché.

Desactive el modo AJAX solo si su tienda no usa ninguna caché de página. De lo contrario, el bloque mostrará datos incorrectos.

Insignias de bajada de precio

Cada vez que se consulta una ficha de producto, el módulo registra el precio con impuestos mostrado en ese momento para ese visitante concreto. Al mostrar el bloque, compara ese precio memorizado con el precio actual:

  • Si el precio ha bajado al menos un 1 %, aparece una insignia roja «↓ -X %» en la esquina superior izquierda de la miniatura.
  • El precio memorizado se actualiza en cada nueva consulta: la insignia significa siempre «el precio ha bajado desde su última visita a esta ficha».
  • Si el precio vuelve a subir, la insignia desaparece.

Historial multidispositivo

Las vistas se registran con el identificador de invitado (id_guest) para los visitantes anónimos, y con el identificador de cliente (id_customer) para los visitantes identificados.

Al iniciar sesión (hook actionAuthentication), el historial de invitado se fusiona en la cuenta de cliente: los contadores de vistas se suman y se conserva la fecha de última consulta más reciente. El cliente recupera así sus productos consultados en todos sus dispositivos.

Página «Mi historial de navegación»

El módulo añade un acceso en el área de cliente (hook displayCustomerAccount) que lleva a una página dedicada con hasta 48 productos consultados, con un botón de borrado si la opción está activada.

URL de la página: /module/dfrecentlyviewed/history (reescrita según su configuración de URL).

Widget

El bloque puede invocarse desde cualquier plantilla de su tema:

{widget name='dfrecentlyviewed'}
{widget name='dfrecentlyviewed' limit=6}

El parámetro limit es opcional y está limitado a 24; sin él se aplica el número configurado en el back-office.

Panel analítico

Vaya a Catálogo > Estadísticas de productos vistos. Allí encontrará, en un periodo de 7, 30, 90 o 365 días:

  • Vistas de producto — número total de consultas registradas.
  • Productos distintos consultados — amplitud real del descubrimiento del catálogo.
  • Visitantes únicos — invitados y clientes combinados.
  • Conversión vista hacia compra — porcentaje de parejas cliente/producto consultadas que dieron lugar a un pedido válido posterior a la consulta. Calculado solo sobre clientes identificados.
  • Productos más consultados — clasificación con enlace directo a la ficha de producto en el back-office.

RGPD y retención

Hooks psgdpr

El módulo implementa actionExportGDPRData y actionDeleteGDPRCustomer: si el módulo oficial psgdpr está instalado, el historial de navegación se incluye en las exportaciones y eliminaciones de datos personales solicitadas por sus clientes.

Borrado autoservicio

Cuando la opción está activada, aparece un enlace «Borrar mi historial» junto al título del bloque y en la página de historial. El visitante puede eliminar él mismo sus datos, con confirmación.

Purga automática

Las vistas más antiguas que la retención configurada se purgan automáticamente, de forma oportunista (en aproximadamente un 1 % de las vistas registradas). No se requiere ninguna configuración.

CRON opcional

Para tiendas de alto tráfico, en la página de configuración se muestra una URL de purga protegida por token. Puede invocarla a diario:

0 4 * * * curl -s "https://su-tienda.com/module/dfrecentlyviewed/tracking?action=cleanup&token=SU_TOKEN"

Integración con el tema

Los productos se renderizan mediante la miniatura nativa de su tema (catalog/_partials/miniatures/product.tpl). El bloque hereda así automáticamente el diseño de sus listados: imagen, nombre, precio, insignias de promoción, botón de añadido rápido si su tema lo ofrece.

Si desea personalizar el contenedor, sobrescriba las plantillas del módulo desde su tema:

themes/su-tema/modules/dfrecentlyviewed/views/templates/hook/recentlyviewed.tpl
themes/su-tema/modules/dfrecentlyviewed/views/templates/hook/_products.tpl

Multitienda

Los historiales están aislados por tienda: un visitante que consulta un producto en la tienda A no lo verá aparecer en la tienda B. Todos los ajustes se guardan mediante la tabla Configuration de PrestaShop, con soporte multitienda nativo.

Desinstalación

La desinstalación elimina la tabla de historial, todos los ajustes y la pestaña de estadísticas. Se solicita una confirmación antes de la operación.

Resolución de problemas

El bloque no aparece

  • Compruebe que el hook correspondiente a la página está activado en la configuración (ficha de producto, inicio, carrito).
  • El bloque solo se muestra si el visitante ha consultado al menos un producto elegible. Un visitante que llega por primera vez no verá nada.
  • Si la exclusión del producto actual y la exclusión del carrito están ambas activas, es posible que no quede ningún producto por mostrar.

El bloque queda vacío en una página en caché

Asegúrese de que el modo Renderizado AJAX está activado. Compruebe también que su configuración de caché no intercepta las peticiones a /module/dfrecentlyviewed/tracking.

Las insignias de bajada de precio nunca aparecen

La insignia solo puede aparecer si el visitante consultó el producto antes de la bajada de precio. Tras modificar una tarifa, dé tiempo a los visitantes para volver. Compruebe también que la opción está activada.

¿Te ha resultado útil esta página?

¿Sigues atascado? Contacta con soporte