DF Recently Viewed: recent bekeken producten (PrestaShop 8/9)
Het blok met recent bekeken producten installeren en configureren: geschiedenis over meerdere apparaten, badges bij prijsdaling, cachebestendige weergave, statistieken en AVG.
Overzicht
DF Recently Viewed (dfrecentlyviewed) toont de producten die uw bezoekers onlangs hebben bekeken, maar met een architectuur die op conversie is gericht: de geschiedenis wordt aan serverzijde bewaard, bij het inloggen in het klantaccount samengevoegd, via AJAX opgebouwd zodat zij achter een paginacache juist blijft, en verrijkt met badges bij een prijsdaling. Een analytisch dashboard vult het geheel aan met een conversiepercentage van bekijken naar kopen.
Vereisten
- PrestaShop 8.0 tot 9.x
- PHP 7.4 tot 8.3
- Geen enkele externe afhankelijkheid (geen Composer, geen jQuery, geen carrouselbibliotheek)
Installatie
- Open in de backoffice Modules > Modulebeheer.
- Klik op Een module installeren en plaats het bestand
dfrecentlyviewed.zip. - Klik op Installeren. De module maakt zijn tabel aan, registreert zijn hooks en voegt een tabblad Catalogus > Statistieken bekeken producten toe.
- Klik op Configureren om bij de instellingen te komen.
De module werkt meteen na de installatie met zinnige standaardinstellingen: 8 producten, carrousel, AJAX-weergave, badges bij prijsdaling ingeschakeld en een bewaartermijn van 90 dagen.
Configuratie
Tabblad Weergave
- Titel van het blok: vertaalbaar in elk van uw talen.
- Aantal producten: van 1 tot 24 producten in het blok.
- Carrouselopmaak: aan geeft een horizontale carrousel met navigatiepijlen. Uit geeft een responsief raster.
- Op de productfiches tonen: hook
displayFooterProduct. - Op de startpagina tonen: hook
displayHome. - Op de winkelwagenpagina tonen: hook
displayShoppingCartFooter. - De link « mijn geschiedenis wissen » tonen: aanbevolen voor AVG-transparantie.
Tabblad Slim gedrag
- Het huidige product uitsluiten: voorkomt dat de fiche die al op het scherm staat wordt aanbevolen.
- Uitverkochte producten verbergen: het filter houdt rekening met toegestane voorbestellingen.
- Producten verbergen die al in de winkelwagen zitten: de winkelwagen wordt aan serverzijde herberekend, nooit vanuit de pagina in cache.
- Badges bij prijsdaling: toont een badge « -X % » wanneer de prijs is gedaald sinds de vorige raadpleging door de bezoeker.
- AJAX-weergave (cachebestendig): sterk aanbevolen, zie het aparte onderdeel hieronder.
- Bewaartermijn van de geschiedenis (dagen): van 1 tot 730 dagen. Oudere weergaven worden automatisch opgeruimd.
Samenwerking met een full-pagecache
Op een winkel met Varnish, Cloudflare, LiteSpeed Cache of een CDN wordt een gepersonaliseerd blok dat aan serverzijde is opgebouwd samen met de pagina in cache gezet: de volgende bezoeker ziet dan de geschiedenis van iemand anders, of een leeg blok.
De modus AJAX-weergave, die standaard aanstaat, lost dat op: het blok wordt na het opbouwen van de pagina geïnjecteerd, via een verzoek aan de frontcontroller van de module. Het vastleggen van de productweergave vertrekt als een niet-blokkerende beacon, die ook werkt wanneer de pagina uit de cache komt.
Schakel de AJAX-modus alleen uit als uw winkel geen enkele paginacache gebruikt. Anders toont het blok verkeerde gegevens.
Badges bij prijsdaling
Bij elke raadpleging van een productfiche legt de module de op dat moment getoonde prijs inclusief btw vast, voor die specifieke bezoeker. Bij het tonen van het blok vergelijkt hij die bewaarde prijs met de huidige prijs:
- Is de prijs met minstens 1 % gedaald, dan verschijnt linksboven op de miniatuur een rode badge « ↓ -X % ».
- De bewaarde prijs wordt bij elke nieuwe raadpleging bijgewerkt: de badge betekent dus altijd « de prijs is gedaald sinds uw vorige bezoek aan deze fiche ».
- Stijgt de prijs weer, dan verdwijnt de badge.
Geschiedenis over meerdere apparaten
De weergaven worden vastgelegd met de gastidentificatie (id_guest) voor anonieme bezoekers, en met de klantidentificatie (id_customer) voor ingelogde bezoekers.
Bij het inloggen (hook actionAuthentication) wordt de gastgeschiedenis in het klantaccount samengevoegd: de weergavetellers worden opgeteld en de meest recente raadplegingsdatum blijft behouden. Zo vindt de klant zijn bekeken producten op al zijn apparaten terug.
Pagina « Mijn browsegeschiedenis »
De module voegt een tegel toe in de klantenzone (hook displayCustomerAccount) die naar een eigen pagina leidt met maximaal 48 bekeken producten en een wisknop als die optie aanstaat.
URL van de pagina: /module/dfrecentlyviewed/history (herschreven volgens uw URL-configuratie).
Widget
Het blok kunt u vanuit elke template van uw thema aanroepen:
{widget name='dfrecentlyviewed'}
{widget name='dfrecentlyviewed' limit=6}
De parameter limit is optioneel en begrensd op 24; zonder die parameter geldt het aantal dat in de backoffice is ingesteld.
Analytisch dashboard
Ga naar Catalogus > Statistieken bekeken producten. Daar vindt u, over een periode van 7, 30, 90 of 365 dagen:
- Productweergaven: het totale aantal vastgelegde raadplegingen.
- Verschillende bekeken producten: de werkelijke breedte van de catalogusontdekking.
- Unieke bezoekers: gasten en klanten samen.
- Conversie van bekijken naar kopen: het percentage koppels klant/product die na de raadpleging tot een geldige bestelling hebben geleid. Wordt alleen op ingelogde klanten berekend.
- Meest bekeken producten: een rangschikking met een rechtstreekse link naar de productfiche in de backoffice.
AVG en bewaartermijn
Hooks van psgdpr
De module implementeert actionExportGDPRData en actionDeleteGDPRCustomer: is de officiële module psgdpr geïnstalleerd, dan wordt de browsegeschiedenis meegenomen in de exports en de verwijderingen van persoonsgegevens die uw klanten aanvragen.
Zelf wissen
Staat de optie aan, dan verschijnt naast de titel van het blok en op de geschiedenispagina een link « Mijn geschiedenis wissen ». De bezoeker kan zijn gegevens zelf verwijderen, met bevestiging.
Automatisch opruimen
Weergaven die ouder zijn dan de ingestelde bewaartermijn worden automatisch opgeruimd, op opportunistische wijze (bij ongeveer 1 % van de vastgelegde weergaven). Daarvoor is geen configuratie nodig.
Optionele CRON
Voor winkels met veel verkeer staat op de configuratiepagina een met een token beveiligde opruim-URL. U kunt die dagelijks aanroepen:
0 4 * * * curl -s "https://uw-winkel.nl/module/dfrecentlyviewed/tracking?action=cleanup&token=UW_TOKEN"
Integratie in het thema
De producten worden getoond met de native miniatuur van uw thema (catalog/_partials/miniatures/product.tpl). Het blok neemt dus automatisch het ontwerp van uw lijsten over: afbeelding, naam, prijs, promobadges en een snelle toevoegknop als uw thema die aanbiedt.
Wilt u de container aanpassen, overschrijf dan de templates van de module vanuit uw thema:
themes/uw-thema/modules/dfrecentlyviewed/views/templates/hook/recentlyviewed.tpl
themes/uw-thema/modules/dfrecentlyviewed/views/templates/hook/_products.tpl
Multistore
De geschiedenissen zijn per winkel afgeschermd: een bezoeker die een product op winkel A bekijkt, ziet dat niet opduiken op winkel B. Alle instellingen worden via de Configuration-tabel van PrestaShop bewaard, met native multistore-ondersteuning.
Verwijderen
Bij het verwijderen worden de geschiedenistabel, alle instellingen en het statistiektabblad gewist. Er wordt vooraf om bevestiging gevraagd.
Problemen oplossen
Het blok verschijnt niet
- Controleer of de hook van de betrokken pagina in de configuratie is ingeschakeld (productfiche, startpagina, winkelwagen).
- Het blok verschijnt alleen als de bezoeker minstens één in aanmerking komend product heeft bekeken. Een bezoeker die voor het eerst op de winkel komt, ziet niets.
- Staan het uitsluiten van het huidige product en het uitsluiten van de winkelwagen allebei aan, dan blijft er mogelijk geen enkel product over om te tonen.
Het blok blijft leeg op een pagina uit de cache
Zorg dat de modus AJAX-weergave aanstaat. Controleer ook of uw cacheconfiguratie de verzoeken naar /module/dfrecentlyviewed/tracking niet onderschept.
De badges bij prijsdaling verschijnen nooit
De badge kan alleen verschijnen als de bezoeker het product vóór de prijsdaling heeft bekeken. Geef bezoekers na een prijswijziging de tijd om terug te komen. Controleer ook of de optie wel aanstaat.