DF Recently Viewed — Zuletzt angesehene Produkte (PrestaShop 8/9)
Den Block für zuletzt angesehene Produkte installieren und konfigurieren: geräteübergreifender Verlauf, Preissenkungs-Badges, cache-sicheres Rendering, Analytics und DSGVO.
Übersicht
DF Recently Viewed (dfrecentlyviewed) zeigt die zuletzt von Ihren Besuchern angesehenen Produkte – mit einer auf Konversion ausgerichteten Architektur: Der Verlauf wird serverseitig gespeichert, beim Login in das Kundenkonto überführt, per AJAX gerendert und bleibt damit hinter einem Seiten-Cache korrekt, ergänzt um Preissenkungs-Badges. Ein Analytics-Dashboard rundet das Ganze mit einer Konversionsrate von Ansicht zu Kauf ab.
Voraussetzungen
- PrestaShop 8.0 bis 9.x
- PHP 7.4 bis 8.3
- Keine externen Abhängigkeiten (weder Composer noch jQuery noch Karussell-Bibliothek)
Installation
- Öffnen Sie im Backoffice Module > Modul-Manager.
- Klicken Sie auf Modul hochladen und legen Sie die Datei
dfrecentlyviewed.zipab. - Klicken Sie auf Installieren. Das Modul legt seine Tabelle an, registriert seine Hooks und fügt den Reiter Katalog > Statistik zuletzt angesehen hinzu.
- Klicken Sie auf Konfigurieren, um zu den Einstellungen zu gelangen.
Das Modul funktioniert sofort nach der Installation mit sinnvollen Standardwerten: 8 Produkte, Karussell, AJAX-Rendering, aktivierte Preissenkungs-Badges, 90 Tage Aufbewahrung.
Konfiguration
Reiter Anzeige
- Blocktitel — in jeder Ihrer Sprachen übersetzbar.
- Anzahl der Produkte — 1 bis 24 im Block angezeigte Produkte.
- Karussell-Layout — aktiviert: horizontales Karussell mit Navigationspfeilen. Deaktiviert: responsives Raster.
- Auf Produktseiten anzeigen — Hook
displayFooterProduct. - Auf der Startseite anzeigen — Hook
displayHome. - Auf der Warenkorbseite anzeigen — Hook
displayShoppingCartFooter. - Link «Verlauf löschen» anzeigen — für DSGVO-Transparenz empfohlen.
Reiter Intelligentes Verhalten
- Aktuell angezeigtes Produkt ausschließen — vermeidet die Empfehlung der bereits sichtbaren Seite.
- Ausverkaufte Produkte ausblenden — der Filter berücksichtigt erlaubte Vorbestellungen.
- Produkte im Warenkorb ausblenden — der Warenkorb wird serverseitig neu berechnet, niemals aus der gecachten Seite.
- Preissenkungs-Badges — zeigt ein «-X %»-Badge an, wenn der Preis seit der letzten Ansicht des Besuchers gefallen ist.
- AJAX-Rendering (cache-sicher) — dringend empfohlen, siehe den eigenen Abschnitt unten.
- Aufbewahrung des Verlaufs (Tage) — 1 bis 730 Tage. Ältere Ansichten werden automatisch bereinigt.
Kompatibilität mit Full Page Cache
In einem Shop mit Varnish, Cloudflare, LiteSpeed Cache oder einem CDN wird ein serverseitig gerenderter, personalisierter Block zusammen mit der Seite gecacht: Der nächste Besucher sieht den Verlauf einer anderen Person oder einen leeren Block.
Der standardmäßig aktivierte Modus AJAX-Rendering löst das Problem: Der Block wird nach dem Rendern der Seite über eine Anfrage an den Front-Controller des Moduls eingefügt. Das Tracking der Produktansicht wird als nicht blockierender Beacon gesendet, der auch dann funktioniert, wenn die Seite aus dem Cache stammt.
Deaktivieren Sie den AJAX-Modus nur, wenn Ihr Shop überhaupt keinen Seiten-Cache verwendet. Andernfalls zeigt der Block falsche Daten an.
Preissenkungs-Badges
Bei jeder Ansicht einer Produktseite speichert das Modul den zu diesem Zeitpunkt angezeigten Bruttopreis für genau diesen Besucher. Beim Anzeigen des Blocks vergleicht es diesen gemerkten Preis mit dem aktuellen:
- Ist der Preis um mindestens 1 % gefallen, erscheint oben links auf der Miniaturansicht ein rotes Badge «↓ -X %».
- Der gemerkte Preis wird bei jeder neuen Ansicht aktualisiert: Das Badge bedeutet daher immer «Der Preis ist seit Ihrem letzten Besuch dieser Seite gefallen».
- Steigt der Preis wieder, verschwindet das Badge.
Geräteübergreifender Verlauf
Ansichten werden bei anonymen Besuchern mit der Gast-Kennung (id_guest) und bei angemeldeten Besuchern mit der Kunden-Kennung (id_customer) erfasst.
Beim Login (Hook actionAuthentication) wird der Gast-Verlauf in das Kundenkonto überführt: Die Ansichtszähler werden addiert und das jüngste Ansichtsdatum bleibt erhalten. So findet der Kunde seine angesehenen Produkte auf allen Geräten wieder.
Seite «Mein Browserverlauf»
Das Modul fügt im Kundenkonto eine Kachel hinzu (Hook displayCustomerAccount), die zu einer eigenen Seite mit bis zu 48 angesehenen Produkten führt – inklusive Löschen-Schaltfläche, wenn die Option aktiviert ist.
URL der Seite: /module/dfrecentlyviewed/history (gemäß Ihrer URL-Konfiguration umgeschrieben).
Widget
Der Block kann aus jedem Template Ihres Themes aufgerufen werden:
{widget name='dfrecentlyviewed'}
{widget name='dfrecentlyviewed' limit=6}
Der Parameter limit ist optional und auf 24 begrenzt; ohne ihn gilt die im Backoffice konfigurierte Anzahl.
Analytics-Dashboard
Gehen Sie zu Katalog > Statistik zuletzt angesehen. Über einen Zeitraum von 7, 30, 90 oder 365 Tagen finden Sie dort:
- Produktansichten — Gesamtzahl der erfassten Ansichten.
- Unterschiedliche angesehene Produkte — die tatsächliche Breite der Katalogentdeckung.
- Eindeutige Besucher — Gäste und Kunden zusammen.
- Konversion Ansicht zu Kauf — Anteil der angesehenen Kunde/Produkt-Paare, die zu einer gültigen Bestellung nach der Ansicht geführt haben. Nur für angemeldete Kunden berechnet.
- Meistangesehene Produkte — Ranking mit Direktlink zur Produktseite im Backoffice.
DSGVO und Aufbewahrung
psgdpr-Hooks
Das Modul implementiert actionExportGDPRData und actionDeleteGDPRCustomer: Ist das offizielle Modul psgdpr installiert, wird der Browserverlauf in die von Ihren Kunden angeforderten Exporte und Löschungen personenbezogener Daten einbezogen.
Selbstbedienungs-Löschung
Ist die Option aktiviert, erscheint neben dem Blocktitel und auf der Verlaufsseite ein Link «Verlauf löschen». Besucher können ihre Daten nach Bestätigung selbst löschen.
Automatische Bereinigung
Ansichten, die älter als die konfigurierte Aufbewahrungsdauer sind, werden opportunistisch automatisch bereinigt (bei etwa 1 % der erfassten Ansichten). Es ist keine Konfiguration erforderlich.
Optionaler CRON
Für Shops mit hohem Traffic wird auf der Konfigurationsseite eine token-geschützte Bereinigungs-URL angezeigt. Sie können sie täglich aufrufen:
0 4 * * * curl -s "https://ihr-shop.de/module/dfrecentlyviewed/tracking?action=cleanup&token=IHR_TOKEN"
Theme-Integration
Die Produkte werden über die native Miniaturansicht Ihres Themes gerendert (catalog/_partials/miniatures/product.tpl). Der Block übernimmt damit automatisch das Design Ihrer Listings: Bild, Name, Preis, Aktions-Badges, Schnell-Hinzufügen-Button, sofern Ihr Theme einen anbietet.
Möchten Sie den Container anpassen, überschreiben Sie die Modul-Templates aus Ihrem Theme heraus:
themes/ihr-theme/modules/dfrecentlyviewed/views/templates/hook/recentlyviewed.tpl
themes/ihr-theme/modules/dfrecentlyviewed/views/templates/hook/_products.tpl
Multishop
Die Verläufe sind pro Shop getrennt: Wer ein Produkt in Shop A ansieht, sieht es nicht in Shop B auftauchen. Alle Einstellungen werden über die Configuration-Tabelle von PrestaShop mit nativer Multishop-Unterstützung gespeichert.
Deinstallation
Die Deinstallation entfernt die Verlaufstabelle, sämtliche Einstellungen und den Statistik-Reiter. Vor dem Vorgang wird eine Bestätigung verlangt.
Fehlerbehebung
Der Block erscheint nicht
- Prüfen Sie, ob der zur Seite passende Hook in der Konfiguration aktiviert ist (Produktseite, Startseite, Warenkorb).
- Der Block erscheint nur, wenn der Besucher mindestens ein infrage kommendes Produkt angesehen hat. Ein Erstbesucher sieht nichts.
- Sind sowohl der Ausschluss des aktuellen Produkts als auch der Warenkorb-Ausschluss aktiv, bleibt möglicherweise kein Produkt zur Anzeige übrig.
Der Block bleibt auf einer gecachten Seite leer
Stellen Sie sicher, dass der Modus AJAX-Rendering aktiviert ist. Prüfen Sie außerdem, ob Ihre Cache-Konfiguration Anfragen an /module/dfrecentlyviewed/tracking nicht abfängt.
Preissenkungs-Badges erscheinen nie
Das Badge kann nur erscheinen, wenn der Besucher das Produkt vor der Preissenkung angesehen hat. Geben Sie den Besuchern nach einer Preisänderung Zeit zurückzukehren. Prüfen Sie außerdem, ob die Option aktiviert ist.