PS PrestaShop Débutant

dfsavecart — Sauvegarde de panier par lien magique

Installation, configuration et utilisation du module de sauvegarde de panier par lien magique pour PrestaShop 8 et 9.

Mis à jour Version du module 1.0.0

Présentation

dfsavecart ajoute une fonctionnalité « Garder pour plus tard » sur la page panier de votre boutique PrestaShop 8 ou 9. Le visiteur, connecté ou invité, saisit son adresse email et reçoit un lien sécurisé (« lien magique ») qui restaure son panier exact — mêmes produits, mêmes quantités — sur n’importe quel appareil, à tout moment pendant la durée de validité configurée.

Le module est non intrusif : il n’affecte ni le tunnel de commande, ni le checkout, ni les autres modules. Il fonctionne avec le système d’email natif de PrestaShop (et donc avec votre SMTP existant).

Prérequis

  • PrestaShop 8.0.x à 9.x
  • PHP 8.1 ou supérieur
  • MySQL 5.7+ ou MariaDB 10.3+
  • Un envoi d’email fonctionnel (Paramètres avancés > E-mail — testez l’envoi avant d’installer le module)

Installation

  1. Téléchargez le fichier dfsavecart.zip depuis votre compte DataFirefly.
  2. Dans le back office PrestaShop, allez dans Modules > Gestionnaire de modules.
  3. Cliquez sur Téléverser un module et sélectionnez le ZIP.
  4. PrestaShop installe le module automatiquement : la table ps_df_savecart est créée et les hooks sont enregistrés.
  5. Cliquez sur Configurer pour accéder aux réglages.

Aucun override de classe ni de contrôleur n’est installé : la désinstallation est propre et sans résidu (la table et les configurations sont supprimées).

Configuration

Tous les réglages se trouvent sur une seule page : Modules > Gestionnaire de modules > dfsavecart > Configurer.

Réglages principaux

  • Activer le module — interrupteur général. Désactivé, le bloc disparaît du front sans désinstaller.
  • Position du boutonPied du panier (recommandé, hook displayShoppingCartFooter), Dans le panier (hook displayShoppingCart) ou Les deux. Le choix dépend de votre thème : testez le rendu sur la page panier après modification.
  • Durée de validité du lien — de 1 à 365 jours, 30 par défaut. Au-delà, le lien expire et l’entrée est purgée.

Sécurité et anti-spam

  • Limite par email / jour — nombre maximal d’envois pour une même adresse sur 24 h glissantes (10 par défaut). Mettre 0 pour désactiver. Le compteur repose sur un hash salé de l’email : l’adresse n’est pas stockée en clair pour cette fonction.
  • Lien à usage unique — si activé, le lien devient invalide après la première restauration. Utile pour des paniers à caractère confidentiel (B2B, devis).

Comportement de restauration

  • Vider le panier actuel avant restauration — activé par défaut. Si désactivé, les produits du lien s’ajoutent au panier en cours (cumul).

RGPD et email

  • Demander un consentement RGPD — affiche une case à cocher obligatoire avant l’envoi (activé par défaut, recommandé).
  • Envoyer en copie cachée au marchand — ajoute l’email de contact de la boutique en BCC sur chaque envoi, pour suivi interne.
  • Sujet email (par langue) — personnalisable pour chaque langue active de la boutique. Variables disponibles : {shop_name} et {firstname}.

Fonctionnement côté client

  1. Le client ajoute des produits à son panier et ouvre la page panier.
  2. Il voit le bloc « Garder ce panier pour plus tard » avec un champ email (pré-rempli s’il est connecté).
  3. Il saisit son email, coche le consentement si demandé, et clique sur Envoyer le lien.
  4. Il reçoit un email contenant un résumé du panier (produits, quantités, total estimé), la date d’expiration et un bouton Restaurer mon panier.
  5. Un clic sur le bouton restaure le panier exact et redirige vers la page panier, avec un message de confirmation.

Cas particuliers à la restauration

  • Produit désactivé ou supprimé — la ligne est ignorée et le client est informé par un message listant les produits indisponibles.
  • Stock insuffisant — la quantité est ajustée au maximum disponible, avec un message signalant l’ajustement.
  • Lien expiré ou déjà utilisé (mode usage unique) — une page d’erreur sobre s’affiche, avec des liens vers le panier actuel et l’accueil.
  • Langue et devise — celles du panier d’origine sont restaurées.

Emails

Les templates HTML et texte sont fournis en français, anglais, espagnol et allemand dans modules/dfsavecart/mails/{iso}/savecart.html et savecart.txt. La langue utilisée est celle du panier au moment de la sauvegarde.

Variables disponibles dans les templates : {firstname}, {shop_name}, {restore_link}, {cart_items_html}, {cart_items_txt}, {cart_total}, {expiry_date}.

Pour personnaliser durablement les templates, dupliquez-les dans le dossier mails de votre thème plutôt que de modifier ceux du module : ils seraient écrasés à la mise à jour.

Sécurité

  • Token 256 bits — généré par random_bytes(32), le générateur cryptographiquement sûr de PHP. 64 caractères hexadécimaux dans l’URL.
  • Stockage en hash — seule l’empreinte SHA-256 du token est stockée en base. En cas de compromission de la base de données, aucun lien ne peut être reconstruit.
  • CSRF — l’endpoint AJAX de sauvegarde vérifie le jeton de session PrestaShop.
  • Validation stricte — le format du token est vérifié côté serveur ([a-f0-9]{64}) avant toute requête en base.

RGPD

  • Consentement explicite configurable avant l’envoi de l’email.
  • Pour la limitation anti-spam, l’email n’est pas conservé en clair : seul un hash salé (avec la clé secrète de la boutique) est utilisé.
  • Les enregistrements expirés sont supprimés automatiquement (purge) — voir section suivante.
  • Aucune donnée n’est transmise à un service tiers : tout reste dans votre base PrestaShop.
  • En cas de demande d’effacement d’un client, supprimez ses lignes dans la table ps_df_savecart (colonne email).

Purge des liens expirés

Trois options, de la plus simple à la plus automatisée :

  1. Bouton manuel — sur la page de configuration du module, « Purger les entrées expirées ».
  2. Module CronJobs — installez le module gratuit CronJobs de PrestaShop : le hook actionCronJob du module est appelé automatiquement et déclenche la purge.
  3. Crontab système — planifiez un appel régulier au cron de votre boutique selon votre configuration serveur.

Statistiques

La page de configuration affiche quatre compteurs en temps réel : total enregistrés, actifs (non expirés), expirés (en attente de purge) et restaurés (liens utilisés au moins une fois). Le ratio restaurés / total vous donne le taux de conversion de la fonctionnalité.

Multiboutique

Le module est compatible multiboutique : chaque sauvegarde mémorise l’identifiant de la boutique d’origine, utilisé lors de la restauration. La configuration se fait par contexte de boutique standard PrestaShop.

Dépannage

L’email n’arrive pas

  • Vérifiez l’envoi d’email global de la boutique : Paramètres avancés > E-mail > Tester l’envoi.
  • Vérifiez le dossier spam du destinataire.
  • Consultez les logs : Paramètres avancés > Logs (les erreurs du module sont préfixées [dfsavecart]).

Le bloc n’apparaît pas sur la page panier

  • Vérifiez que le module est activé dans sa configuration.
  • Vérifiez que le panier contient au moins un produit (le bloc est masqué sur panier vide).
  • Vérifiez la position choisie : certains thèmes n’implémentent pas le hook displayShoppingCartFooter — passez alors sur « Dans le panier » ou « Les deux ».
  • Videz le cache : Paramètres avancés > Performances > Vider le cache.

Message « Jeton de sécurité invalide »

  • La page panier est restée ouverte trop longtemps et la session a expiré : rafraîchissez la page et réessayez.

Message « Trop de demandes pour cette adresse »

  • La limite anti-spam quotidienne est atteinte pour cet email. Augmentez la limite dans la configuration ou attendez 24 h.

Désinstallation

La désinstallation supprime la table ps_df_savecart (tous les paniers sauvegardés sont perdus) et l’ensemble des clés de configuration. Aucun résidu n’est laissé en base ni dans les fichiers.

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

Toujours bloqué ? Contactez le support