dfsavecart — Warenkorb-Speicherung mit Magic Link
Installation, Konfiguration und Nutzung des Magic-Link-Warenkorb-Moduls für PrestaShop 8 und 9.
Überblick
dfsavecart fügt der Warenkorb-Seite Ihres PrestaShop-8- oder -9-Shops eine Funktion „Für später aufbewahren“ hinzu. Der Besucher, eingeloggt oder als Gast, gibt seine E-Mail-Adresse ein und erhält einen sicheren Link („Magic Link“), der seinen exakten Warenkorb wiederherstellt — gleiche Produkte, gleiche Mengen — auf jedem Gerät, jederzeit innerhalb der konfigurierten Gültigkeitsdauer.
Das Modul ist nicht intrusiv: Es beeinflusst weder den Bestellprozess noch den Checkout oder andere Module. Es arbeitet mit dem nativen E-Mail-System von PrestaShop (und damit mit Ihrem bestehenden SMTP).
Voraussetzungen
- PrestaShop 8.0.x bis 9.x
- PHP 8.1 oder höher
- MySQL 5.7+ oder MariaDB 10.3+
- Funktionierender E-Mail-Versand (Erweiterte Einstellungen > E-Mail — testen Sie den Versand vor der Modulinstallation)
Installation
- Laden Sie die Datei
dfsavecart.zipaus Ihrem DataFirefly-Konto herunter. - Gehen Sie im PrestaShop-Backoffice zu Module > Modul-Manager.
- Klicken Sie auf Modul hochladen und wählen Sie das ZIP aus.
- PrestaShop installiert das Modul automatisch: Die Tabelle
ps_df_savecartwird erstellt und die Hooks registriert. - Klicken Sie auf Konfigurieren, um zu den Einstellungen zu gelangen.
Es werden keine Klassen- oder Controller-Overrides installiert: Die Deinstallation ist sauber und rückstandsfrei (Tabelle und Konfigurationsschlüssel werden entfernt).
Konfiguration
Alle Einstellungen befinden sich auf einer einzigen Seite: Module > Modul-Manager > dfsavecart > Konfigurieren.
Haupteinstellungen
- Modul aktivieren — Hauptschalter. Deaktiviert verschwindet der Block aus dem Frontoffice, ohne zu deinstallieren.
- Button-Position — Warenkorb-Fuß (empfohlen, Hook
displayShoppingCartFooter), Im Warenkorb (HookdisplayShoppingCart) oder Beides. Die Wahl hängt von Ihrem Theme ab: Prüfen Sie die Darstellung auf der Warenkorb-Seite nach der Änderung. - Gültigkeitsdauer des Links — von 1 bis 365 Tagen, 30 Standard. Danach läuft der Link ab und der Eintrag wird bereinigt.
Sicherheit und Anti-Spam
- Limit pro E-Mail / Tag — maximale Anzahl von Versendungen für dieselbe Adresse in gleitenden 24 h (10 Standard). 0 zum Deaktivieren. Der Zähler basiert auf einem gesalzenen Hash der E-Mail: Die Adresse wird für diese Funktion nicht im Klartext gespeichert.
- Einmal-Link — wenn aktiviert, wird der Link nach der ersten Wiederherstellung ungültig. Nützlich für vertrauliche Warenkörbe (B2B, Angebote).
Wiederherstellungsverhalten
- Aktuellen Warenkorb vor der Wiederherstellung leeren — standardmäßig aktiviert. Wenn deaktiviert, werden die Produkte des Links zum laufenden Warenkorb hinzugefügt (kumulativ).
DSGVO und E-Mail
- DSGVO-Einwilligung anfordern — zeigt vor dem Versand ein Pflicht-Kästchen an (standardmäßig aktiviert, empfohlen).
- BCC an den Händler senden — fügt die Kontakt-E-Mail des Shops bei jedem Versand als BCC hinzu, für interne Nachverfolgung.
- E-Mail-Betreff (pro Sprache) — für jede aktive Shop-Sprache anpassbar. Verfügbare Variablen:
{shop_name}und{firstname}.
Funktionsweise für den Kunden
- Der Kunde legt Produkte in seinen Warenkorb und öffnet die Warenkorb-Seite.
- Er sieht den Block „Diesen Warenkorb für später aufbewahren“ mit einem E-Mail-Feld (vorausgefüllt, wenn eingeloggt).
- Er gibt seine E-Mail ein, setzt das Einwilligungshäkchen falls verlangt, und klickt auf Link senden.
- Er erhält eine E-Mail mit einer Warenkorb-Zusammenfassung (Produkte, Mengen, geschätzter Gesamtbetrag), dem Ablaufdatum und einem Button Warenkorb wiederherstellen.
- Ein Klick auf den Button stellt den exakten Warenkorb wieder her und leitet zur Warenkorb-Seite weiter, mit einer Bestätigungsmeldung.
Sonderfälle bei der Wiederherstellung
- Deaktiviertes oder gelöschtes Produkt — die Zeile wird übersprungen und der Kunde per Meldung über die nicht verfügbaren Produkte informiert.
- Unzureichender Bestand — die Menge wird auf das verfügbare Maximum angepasst, mit einer Meldung über die Anpassung.
- Abgelaufener oder bereits verwendeter Link (Einmal-Modus) — eine schlichte Fehlerseite wird angezeigt, mit Links zum aktuellen Warenkorb und zur Startseite.
- Sprache und Währung — die des ursprünglichen Warenkorbs werden wiederhergestellt.
E-Mails
HTML- und Text-Vorlagen werden in Französisch, Englisch, Spanisch und Deutsch in modules/dfsavecart/mails/{iso}/savecart.html und savecart.txt mitgeliefert. Verwendet wird die Sprache des Warenkorbs zum Zeitpunkt der Speicherung.
Verfügbare Variablen in den Vorlagen: {firstname}, {shop_name}, {restore_link}, {cart_items_html}, {cart_items_txt}, {cart_total}, {expiry_date}.
Um Vorlagen dauerhaft anzupassen, duplizieren Sie sie in den mails-Ordner Ihres Themes, statt die des Moduls zu bearbeiten: Diese würden beim Update überschrieben.
Sicherheit
- 256-Bit-Token — erzeugt von
random_bytes(32), dem kryptografisch sicheren Generator von PHP. 64 Hexadezimalzeichen in der URL. - Hash-Speicherung — nur der SHA-256-Fingerabdruck des Tokens wird in der Datenbank gespeichert. Bei einer Kompromittierung der Datenbank kann kein Link rekonstruiert werden.
- CSRF — der AJAX-Speicher-Endpoint prüft das PrestaShop-Sitzungstoken.
- Strikte Validierung — das Token-Format wird serverseitig geprüft (
[a-f0-9]{64}), bevor eine Datenbankabfrage erfolgt.
DSGVO
- Konfigurierbare ausdrückliche Einwilligung vor dem E-Mail-Versand.
- Für das Anti-Spam-Limit wird die E-Mail nicht im Klartext aufbewahrt: Es wird nur ein gesalzener Hash (mit dem geheimen Schlüssel des Shops) verwendet.
- Abgelaufene Datensätze werden automatisch gelöscht (Bereinigung) — siehe nächster Abschnitt.
- Es werden keine Daten an Drittanbieter übermittelt: Alles bleibt in Ihrer PrestaShop-Datenbank.
- Bei einem Löschantrag eines Kunden löschen Sie dessen Zeilen in der Tabelle
ps_df_savecart(Spalteemail).
Bereinigung abgelaufener Links
Drei Optionen, von der einfachsten zur am stärksten automatisierten:
- Manueller Button — auf der Konfigurationsseite des Moduls, „Abgelaufene Einträge bereinigen“.
- CronJobs-Modul — installieren Sie das kostenlose CronJobs-Modul von PrestaShop: Der Hook
actionCronJobdes Moduls wird automatisch aufgerufen und löst die Bereinigung aus. - System-Crontab — planen Sie einen regelmäßigen Aufruf des Shop-Crons entsprechend Ihrer Serverkonfiguration.
Statistiken
Die Konfigurationsseite zeigt vier Echtzeit-Zähler: gesamt gespeichert, aktiv (nicht abgelaufen), abgelaufen (Bereinigung ausstehend) und wiederhergestellt (mindestens einmal verwendete Links). Das Verhältnis wiederhergestellt / gesamt ergibt die Conversion-Rate der Funktion.
Multishop
Das Modul ist Multishop-kompatibel: Jede Speicherung merkt sich die ID des Ursprungs-Shops, die bei der Wiederherstellung verwendet wird. Die Konfiguration folgt dem Standard-Shop-Kontext von PrestaShop.
Fehlerbehebung
Die E-Mail kommt nicht an
- Prüfen Sie den globalen E-Mail-Versand des Shops: Erweiterte Einstellungen > E-Mail > Versand testen.
- Prüfen Sie den Spam-Ordner des Empfängers.
- Prüfen Sie die Logs: Erweiterte Einstellungen > Logs (Modulfehler haben das Präfix
[dfsavecart]).
Der Block erscheint nicht auf der Warenkorb-Seite
- Prüfen Sie, ob das Modul in seiner Konfiguration aktiviert ist.
- Prüfen Sie, ob der Warenkorb mindestens ein Produkt enthält (der Block ist bei leerem Warenkorb ausgeblendet).
- Prüfen Sie die gewählte Position: Manche Themes implementieren den Hook
displayShoppingCartFooternicht — wechseln Sie dann auf „Im Warenkorb“ oder „Beides“. - Leeren Sie den Cache: Erweiterte Einstellungen > Leistung > Cache leeren.
Meldung „Ungültiges Sicherheitstoken“
- Die Warenkorb-Seite war zu lange geöffnet und die Sitzung ist abgelaufen: Aktualisieren Sie die Seite und versuchen Sie es erneut.
Meldung „Zu viele Anfragen für diese Adresse“
- Das tägliche Anti-Spam-Limit für diese E-Mail wurde erreicht. Erhöhen Sie das Limit in der Konfiguration oder warten Sie 24 h.
Deinstallation
Die Deinstallation entfernt die Tabelle ps_df_savecart (alle gespeicherten Warenkörbe gehen verloren) und sämtliche Konfigurationsschlüssel. Es bleiben keine Rückstände in der Datenbank oder auf der Festplatte.