PS PrestaShop Débutant

DF Recently Viewed — Produits récemment consultés (PrestaShop 8/9)

Installer et configurer le bloc de produits récemment consultés : historique cross-device, badges de baisse de prix, rendu compatible full page cache, analytics et RGPD.

Mis à jour Version du module 1.0.1

Présentation

DF Recently Viewed (dfrecentlyviewed) affiche les produits récemment consultés par vos visiteurs, mais avec une architecture pensée pour la conversion : l’historique est stocké côté serveur, fusionné dans le compte client à la connexion, rendu en AJAX pour rester exact derrière un cache de page, et enrichi de badges de baisse de prix. Un tableau de bord analytique complète l’ensemble avec un taux de conversion vue vers achat.

Prérequis

  • PrestaShop 8.0 à 9.x
  • PHP 7.4 à 8.3
  • Aucune dépendance externe (ni Composer, ni jQuery, ni librairie de carrousel)

Installation

  1. Dans le back-office, ouvrez Modules > Gestionnaire de modules.
  2. Cliquez sur Installer un module puis déposez le fichier dfrecentlyviewed.zip.
  3. Cliquez sur Installer. Le module crée sa table, enregistre ses hooks et ajoute un onglet Catalogue > Stats produits consultés.
  4. Cliquez sur Configurer pour accéder aux réglages.

Le module fonctionne dès l’installation avec des réglages par défaut sensés : 8 produits, carrousel, rendu AJAX, badges de baisse de prix activés, rétention de 90 jours.

Configuration

Onglet Affichage

  • Titre du bloc — traduisible dans chacune de vos langues.
  • Nombre de produits — de 1 à 24 produits affichés dans le bloc.
  • Mise en page carrousel — activé : carrousel horizontal avec flèches de navigation. Désactivé : grille responsive.
  • Afficher sur les fiches produit — hook displayFooterProduct.
  • Afficher sur la page d’accueil — hook displayHome.
  • Afficher sur la page panier — hook displayShoppingCartFooter.
  • Afficher le lien « effacer mon historique » — recommandé pour la transparence RGPD.

Onglet Comportement intelligent

  • Exclure le produit actuellement affiché — évite de recommander la fiche déjà à l’écran.
  • Masquer les produits en rupture — le filtre tient compte des précommandes autorisées.
  • Masquer les produits déjà au panier — le panier est recalculé côté serveur, jamais depuis la page en cache.
  • Badges de baisse de prix — affiche un badge « -X % » lorsque le prix a baissé depuis la dernière consultation du visiteur.
  • Rendu AJAX (compatible cache) — fortement recommandé, voir la section dédiée ci-dessous.
  • Rétention de l’historique (jours) — de 1 à 730 jours. Les vues plus anciennes sont purgées automatiquement.

Compatibilité avec le full page cache

Sur une boutique équipée de Varnish, Cloudflare, LiteSpeed Cache ou d’un CDN, un bloc personnalisé rendu côté serveur est mis en cache avec la page : le visiteur suivant voit l’historique de quelqu’un d’autre, ou un bloc vide.

Le mode Rendu AJAX, activé par défaut, résout ce problème : le bloc est injecté après le rendu de la page, via une requête au contrôleur front du module. Le tracking de la vue produit part quant à lui en beacon non bloquant, qui fonctionne également lorsque la page provient du cache.

Ne désactivez le mode AJAX que si votre boutique n’utilise aucun cache de page. Sinon, le bloc affichera des données incorrectes.

Badges de baisse de prix

À chaque consultation d’une fiche produit, le module enregistre le prix TTC affiché à ce moment-là pour ce visiteur précis. Lors de l’affichage du bloc, il compare ce prix mémorisé au prix courant :

  • Si le prix a baissé d’au moins 1 %, un badge rouge « ↓ -X % » s’affiche en haut à gauche de la miniature.
  • Le prix mémorisé est mis à jour à chaque nouvelle consultation : le badge signifie donc toujours « le prix a baissé depuis votre dernière visite sur cette fiche ».
  • Si le prix remonte, le badge disparaît.

Historique cross-device

Les vues sont enregistrées avec l’identifiant invité (id_guest) pour les visiteurs anonymes, et avec l’identifiant client (id_customer) pour les visiteurs connectés.

Au moment de la connexion (hook actionAuthentication), l’historique invité est fusionné dans le compte client : les compteurs de vues sont additionnés et la date de dernière consultation la plus récente est conservée. Le client retrouve ainsi ses produits consultés sur tous ses appareils.

Page « Mon historique de navigation »

Le module ajoute une tuile dans l’espace client (hook displayCustomerAccount) menant à une page dédiée affichant jusqu’à 48 produits consultés, avec un bouton d’effacement si l’option est activée.

URL de la page : /module/dfrecentlyviewed/history (réécrite selon votre configuration d’URL).

Widget

Le bloc peut être appelé depuis n’importe quel template de votre thème :

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

Le paramètre limit est facultatif et plafonné à 24 ; sans lui, le nombre configuré dans le back-office s’applique.

Tableau de bord analytique

Rendez-vous dans Catalogue > Stats produits consultés. Vous y trouverez, sur une période de 7, 30, 90 ou 365 jours :

  • Vues produits — nombre total de consultations enregistrées.
  • Produits distincts consultés — étendue réelle de la découverte catalogue.
  • Visiteurs uniques — invités et clients confondus.
  • Conversion vue vers achat — pourcentage de couples client/produit consultés qui ont donné lieu à une commande valide postérieure à la consultation. Calculé uniquement sur les clients connectés.
  • Produits les plus consultés — classement avec lien direct vers la fiche produit en back-office.

RGPD et rétention

Hooks psgdpr

Le module implémente actionExportGDPRData et actionDeleteGDPRCustomer : si le module officiel psgdpr est installé, l’historique de navigation est inclus dans les exports et les suppressions de données personnelles demandées par vos clients.

Effacement libre-service

Lorsque l’option est activée, un lien « Effacer mon historique » apparaît à côté du titre du bloc et sur la page d’historique. Le visiteur peut supprimer lui-même ses données, avec confirmation.

Purge automatique

Les vues plus anciennes que la durée de rétention configurée sont purgées automatiquement, de façon opportuniste (sur environ 1 % des vues enregistrées). Aucune configuration n’est nécessaire.

CRON facultatif

Pour les boutiques à fort trafic, une URL de purge protégée par jeton est affichée sur la page de configuration. Vous pouvez l’appeler quotidiennement :

0 4 * * * curl -s "https://votre-boutique.com/module/dfrecentlyviewed/tracking?action=cleanup&token=VOTRE_JETON"

Intégration au thème

Les produits sont rendus via la miniature native de votre thème (catalog/_partials/miniatures/product.tpl). Le bloc hérite donc automatiquement du design de vos listings : image, nom, prix, badges de promotion, bouton d’ajout rapide si votre thème en propose un.

Si vous souhaitez personnaliser le conteneur, surchargez les templates du module depuis votre thème :

themes/votre-theme/modules/dfrecentlyviewed/views/templates/hook/recentlyviewed.tpl
themes/votre-theme/modules/dfrecentlyviewed/views/templates/hook/_products.tpl

Multiboutique

Les historiques sont cloisonnés par boutique : un visiteur consultant un produit sur la boutique A ne le verra pas apparaître sur la boutique B. Tous les réglages sont stockés via la table Configuration de PrestaShop, avec support multiboutique natif.

Désinstallation

La désinstallation supprime la table d’historique, l’ensemble des réglages et l’onglet de statistiques. Une confirmation est demandée avant l’opération.

Dépannage

Le bloc n’apparaît pas

  • Vérifiez que le hook correspondant à la page est bien activé dans la configuration (fiche produit, accueil, panier).
  • Le bloc ne s’affiche que si le visiteur a consulté au moins un produit éligible. Un visiteur arrivant pour la première fois sur la boutique ne verra rien.
  • Si l’exclusion du produit courant et l’exclusion du panier sont toutes deux actives, il est possible qu’aucun produit ne reste à afficher.

Le bloc reste vide sur une page en cache

Assurez-vous que le mode Rendu AJAX est activé. Vérifiez également que votre configuration de cache n’intercepte pas les requêtes vers /module/dfrecentlyviewed/tracking.

Les badges de baisse de prix ne s’affichent jamais

Le badge ne peut apparaître que si le visiteur a consulté le produit avant la baisse de prix. Après une modification de tarif, laissez le temps aux visiteurs de revenir. Vérifiez également que l’option est bien activée.

Cette page vous a-t-elle été utile ?

Toujours bloqué ? Contactez le support