# DF Recently Viewed — Prodotti visti di recente (PrestaShop 8/9)

> 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,…

- Pagina: <https://www.datafirefly.com/it/documentation/dfrecentlyviewed/>
- Lingua: it
- Aggiornato il: 2026-07-12
- Altre lingue: [fr](https://www.datafirefly.com/documentation/dfrecentlyviewed/index.md), [en](https://www.datafirefly.com/en/documentation/dfrecentlyviewed/index.md), [es](https://www.datafirefly.com/es/documentation/dfrecentlyviewed/index.md), [de](https://www.datafirefly.com/de/documentation/dfrecentlyviewed/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfrecentlyviewed/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfrecentlyviewed/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfrecentlyviewed/index.md)
- Indice: <https://www.datafirefly.com/it/documentation/llms.txt>

## 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

1. Nel back-office, apri **Moduli > Gestore moduli**.
2. Clicca su **Carica un modulo** e trascina il file `dfrecentlyviewed.zip`.
3. Clicca su **Installa**. Il modulo crea la sua tabella, registra i suoi hook e aggiunge una scheda **Catalogo > Statistiche prodotti visti**.
4. 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.
