DF Recently Viewed — Prodotti visti di recente (PrestaShop 8/9)
Installare e configurare il blocco dei prodotti visti di recente: cronologia cross-device, badge di calo di prezzo, rendering compatibile con la cache, analytics e GDPR.
Presentazione
DF Recently Viewed (dfrecentlyviewed) mostra i prodotti visti di recente dai tuoi visitatori, con un’architettura pensata per la conversione: la cronologia è salvata lato server, fusa nell’account cliente all’accesso, resa via AJAX per restare corretta dietro una cache di pagina e arricchita da badge di calo di prezzo. Una dashboard analitica completa il quadro con un tasso di conversione visualizzazione verso acquisto.
Requisiti
- PrestaShop 8.0 a 9.x
- PHP 7.4 a 8.3
- Nessuna dipendenza esterna (né Composer, né jQuery, né libreria di carosello)
Installazione
- Nel back-office, apri Moduli > Gestore moduli.
- Clicca su Carica un modulo e trascina il file
dfrecentlyviewed.zip. - Clicca su Installa. Il modulo crea la sua tabella, registra i suoi hook e aggiunge una scheda Catalogo > Statistiche prodotti visti.
- Clicca su Configura per accedere alle impostazioni.
Il modulo funziona già dall’installazione con impostazioni predefinite sensate: 8 prodotti, carosello, rendering AJAX, badge di calo di prezzo attivi, conservazione di 90 giorni.
Configurazione
Scheda Visualizzazione
- Titolo del blocco — traducibile in ciascuna delle tue lingue.
- Numero di prodotti — da 1 a 24 prodotti mostrati nel blocco.
- Layout a carosello — attivo: carosello orizzontale con frecce di navigazione. Disattivo: griglia responsive.
- Mostra sulle schede prodotto — hook
displayFooterProduct. - Mostra sulla home page — hook
displayHome. - Mostra sulla pagina del carrello — hook
displayShoppingCartFooter. - Mostra il link «cancella la mia cronologia» — consigliato per la trasparenza GDPR.
Scheda Comportamento intelligente
- Escludi il prodotto attualmente visualizzato — evita di consigliare la scheda già a schermo.
- Nascondi i prodotti esauriti — il filtro tiene conto dei preordini consentiti.
- Nascondi i prodotti già nel carrello — il carrello viene ricalcolato lato server, mai dalla pagina in cache.
- Badge di calo di prezzo — mostra un badge «-X %» quando il prezzo è sceso dall’ultima consultazione del visitatore.
- Rendering AJAX (compatibile con la cache) — fortemente consigliato, vedi la sezione dedicata più sotto.
- Conservazione della cronologia (giorni) — da 1 a 730 giorni. Le visualizzazioni più vecchie vengono eliminate automaticamente.
Compatibilità con la full page cache
In un negozio con Varnish, Cloudflare, LiteSpeed Cache o un CDN, un blocco personalizzato reso lato server viene messo in cache insieme alla pagina: il visitatore successivo vede la cronologia di qualcun altro, oppure un blocco vuoto.
La modalità Rendering AJAX, attiva per impostazione predefinita, risolve il problema: il blocco viene iniettato dopo il rendering della pagina, tramite una richiesta al controller front del modulo. Il tracciamento della visualizzazione prodotto parte come beacon non bloccante, che funziona anche quando la pagina proviene dalla cache.
Disattiva la modalità AJAX solo se il tuo negozio non usa alcuna cache di pagina. Altrimenti il blocco mostrerà dati errati.
Badge di calo di prezzo
A ogni consultazione di una scheda prodotto, il modulo registra il prezzo IVA inclusa mostrato in quel momento per quello specifico visitatore. Quando visualizza il blocco, confronta quel prezzo memorizzato con quello attuale:
- Se il prezzo è calato di almeno l’1 %, un badge rosso «↓ -X %» compare in alto a sinistra sulla miniatura.
- Il prezzo memorizzato viene aggiornato a ogni nuova consultazione: il badge significa quindi sempre «il prezzo è calato dalla tua ultima visita a questa scheda».
- Se il prezzo risale, il badge scompare.
Cronologia cross-device
Le visualizzazioni vengono registrate con l’identificativo ospite (id_guest) per i visitatori anonimi e con l’identificativo cliente (id_customer) per i visitatori autenticati.
Al momento dell’accesso (hook actionAuthentication), la cronologia ospite viene fusa nell’account cliente: i contatori di visualizzazione vengono sommati e viene conservata la data di ultima consultazione più recente. Il cliente ritrova così i prodotti consultati su tutti i suoi dispositivi.
Pagina «La mia cronologia di navigazione»
Il modulo aggiunge un riquadro nell’area cliente (hook displayCustomerAccount) che porta a una pagina dedicata con fino a 48 prodotti consultati, con un pulsante di cancellazione se l’opzione è attiva.
URL della pagina: /module/dfrecentlyviewed/history (riscritta secondo la tua configurazione degli URL).
Widget
Il blocco può essere richiamato da qualsiasi template del tuo tema:
{widget name='dfrecentlyviewed'}
{widget name='dfrecentlyviewed' limit=6}
Il parametro limit è facoltativo e limitato a 24; senza di esso si applica il numero configurato nel back-office.
Dashboard analitica
Vai su Catalogo > Statistiche prodotti visti. Su un periodo di 7, 30, 90 o 365 giorni troverai:
- Visualizzazioni prodotto — numero totale di consultazioni registrate.
- Prodotti distinti consultati — l’ampiezza reale della scoperta del catalogo.
- Visitatori unici — ospiti e clienti insieme.
- Conversione visualizzazione verso acquisto — percentuale di coppie cliente/prodotto consultate che hanno portato a un ordine valido successivo alla consultazione. Calcolata solo sui clienti autenticati.
- Prodotti più consultati — classifica con link diretto alla scheda prodotto nel back-office.
GDPR e conservazione
Hook psgdpr
Il modulo implementa actionExportGDPRData e actionDeleteGDPRCustomer: se il modulo ufficiale psgdpr è installato, la cronologia di navigazione viene inclusa nelle esportazioni e nelle cancellazioni di dati personali richieste dai tuoi clienti.
Cancellazione self-service
Quando l’opzione è attiva, accanto al titolo del blocco e sulla pagina della cronologia compare un link «Cancella la mia cronologia». Il visitatore può eliminare i propri dati, con conferma.
Pulizia automatica
Le visualizzazioni più vecchie della conservazione configurata vengono eliminate automaticamente, in modo opportunistico (su circa l’1 % delle visualizzazioni registrate). Non è richiesta alcuna configurazione.
CRON facoltativo
Per i negozi ad alto traffico, nella pagina di configurazione è mostrato un URL di pulizia protetto da token. Puoi richiamarlo quotidianamente:
0 4 * * * curl -s "https://il-tuo-negozio.com/module/dfrecentlyviewed/tracking?action=cleanup&token=IL_TUO_TOKEN"
Integrazione con il tema
I prodotti vengono resi tramite la miniatura nativa del tuo tema (catalog/_partials/miniatures/product.tpl). Il blocco eredita quindi automaticamente il design dei tuoi listati: immagine, nome, prezzo, badge di promozione, pulsante di aggiunta rapida se il tuo tema ne offre uno.
Se vuoi personalizzare il contenitore, sovrascrivi i template del modulo dal tuo tema:
themes/il-tuo-tema/modules/dfrecentlyviewed/views/templates/hook/recentlyviewed.tpl
themes/il-tuo-tema/modules/dfrecentlyviewed/views/templates/hook/_products.tpl
Multinegozio
Le cronologie sono isolate per negozio: un visitatore che consulta un prodotto sul negozio A non lo vedrà comparire sul negozio B. Tutte le impostazioni sono salvate tramite la tabella Configuration di PrestaShop, con supporto multinegozio nativo.
Disinstallazione
La disinstallazione elimina la tabella della cronologia, tutte le impostazioni e la scheda delle statistiche. Viene richiesta una conferma prima dell’operazione.
Risoluzione dei problemi
Il blocco non compare
- Verifica che l’hook corrispondente alla pagina sia attivato nella configurazione (scheda prodotto, home, carrello).
- Il blocco si mostra solo se il visitatore ha consultato almeno un prodotto idoneo. Un visitatore che arriva per la prima volta non vedrà nulla.
- Se l’esclusione del prodotto corrente e l’esclusione del carrello sono entrambe attive, è possibile che non resti alcun prodotto da mostrare.
Il blocco resta vuoto su una pagina in cache
Assicurati che la modalità Rendering AJAX sia attiva. Verifica inoltre che la configurazione della cache non intercetti le richieste verso /module/dfrecentlyviewed/tracking.
I badge di calo di prezzo non compaiono mai
Il badge può comparire solo se il visitatore ha consultato il prodotto prima del calo di prezzo. Dopo una modifica tariffaria, lascia il tempo ai visitatori di tornare. Verifica inoltre che l’opzione sia attiva.