dfsavecart — Salvataggio carrello con magic link
Installazione, configurazione e utilizzo del modulo di salvataggio carrello con magic link per PrestaShop 8 e 9.
Panoramica
dfsavecart aggiunge una funzione «Salva per dopo» alla pagina del carrello del tuo negozio PrestaShop 8 o 9. Il visitatore, connesso o ospite, inserisce il proprio indirizzo email e riceve un link sicuro («magic link») che ripristina il suo carrello esatto — stessi prodotti, stesse quantità — su qualsiasi dispositivo, in qualsiasi momento entro il periodo di validità configurato.
Il modulo non è invasivo: non influisce sul funnel d’ordine, sul checkout né sugli altri moduli. Funziona con il sistema email nativo di PrestaShop (e quindi con il tuo SMTP esistente).
Requisiti
- PrestaShop da 8.0.x a 9.x
- PHP 8.1 o superiore
- MySQL 5.7+ o MariaDB 10.3+
- Invio email funzionante (Parametri avanzati > E-mail — testa l’invio prima di installare il modulo)
Installazione
- Scarica il file
dfsavecart.zipdal tuo account DataFirefly. - Nel back office di PrestaShop, vai su Moduli > Gestore dei moduli.
- Clicca su Carica un modulo e seleziona lo ZIP.
- PrestaShop installa il modulo automaticamente: viene creata la tabella
ps_df_savecarte vengono registrati gli hook. - Clicca su Configura per accedere alle impostazioni.
Non viene installato alcun override di classe o controller: la disinstallazione è pulita e senza residui (tabella e chiavi di configurazione vengono rimosse).
Configurazione
Tutte le impostazioni si trovano su un’unica pagina: Moduli > Gestore dei moduli > dfsavecart > Configura.
Impostazioni principali
- Attiva il modulo — interruttore generale. Disattivato, il blocco scompare dal front office senza disinstallare.
- Posizione del pulsante — Piè del carrello (consigliato, hook
displayShoppingCartFooter), Nel carrello (hookdisplayShoppingCart) o Entrambi. La scelta dipende dal tuo tema: verifica la resa sulla pagina del carrello dopo la modifica. - Durata di validità del link — da 1 a 365 giorni, 30 di default. Oltre, il link scade e la voce viene eliminata.
Sicurezza e anti-spam
- Limite per email / giorno — numero massimo di invii per lo stesso indirizzo in 24 h mobili (10 di default). Imposta 0 per disattivare. Il contatore si basa su un hash salato dell’email: l’indirizzo non viene memorizzato in chiaro per questa funzione.
- Link monouso — se attivo, il link diventa non valido dopo il primo ripristino. Utile per carrelli riservati (B2B, preventivi).
Comportamento del ripristino
- Svuota il carrello attuale prima del ripristino — attivo di default. Se disattivato, i prodotti del link si aggiungono al carrello in corso (cumulativo).
GDPR ed email
- Richiedi consenso GDPR — mostra una casella obbligatoria prima dell’invio (attivo di default, consigliato).
- Invia copia nascosta al commerciante — aggiunge l’email di contatto del negozio in BCC a ogni invio, per tracciamento interno.
- Oggetto email (per lingua) — personalizzabile per ogni lingua attiva del negozio. Variabili disponibili:
{shop_name}e{firstname}.
Funzionamento lato cliente
- Il cliente aggiunge prodotti al carrello e apre la pagina del carrello.
- Vede il blocco «Salva questo carrello per dopo» con un campo email (precompilato se connesso).
- Inserisce la propria email, spunta il consenso se richiesto, e clicca su Invia il link.
- Riceve un’email con un riepilogo del carrello (prodotti, quantità, totale stimato), la data di scadenza e un pulsante Ripristina il mio carrello.
- Un clic sul pulsante ripristina il carrello esatto e reindirizza alla pagina del carrello, con un messaggio di conferma.
Casi particolari al ripristino
- Prodotto disattivato o eliminato — la riga viene ignorata e il cliente è informato tramite un messaggio che elenca i prodotti non disponibili.
- Stock insufficiente — la quantità viene adattata al massimo disponibile, con un messaggio che segnala l’adeguamento.
- Link scaduto o già utilizzato (modalità monouso) — viene mostrata una pagina di errore sobria, con link al carrello attuale e alla home.
- Lingua e valuta — vengono ripristinate quelle del carrello originale.
I template HTML e testo sono forniti in francese, inglese, spagnolo e tedesco in modules/dfsavecart/mails/{iso}/savecart.html e savecart.txt. La lingua utilizzata è quella del carrello al momento del salvataggio.
Variabili disponibili nei template: {firstname}, {shop_name}, {restore_link}, {cart_items_html}, {cart_items_txt}, {cart_total}, {expiry_date}.
Per personalizzare i template in modo duraturo, duplicali nella cartella mails del tuo tema invece di modificare quelli del modulo: verrebbero sovrascritti all’aggiornamento.
Sicurezza
- Token a 256 bit — generato da
random_bytes(32), il generatore crittograficamente sicuro di PHP. 64 caratteri esadecimali nell’URL. - Memorizzazione in hash — solo l’impronta SHA-256 del token viene salvata nel database. In caso di compromissione del database, nessun link può essere ricostruito.
- CSRF — l’endpoint AJAX di salvataggio verifica il token di sessione di PrestaShop.
- Validazione rigorosa — il formato del token viene verificato lato server (
[a-f0-9]{64}) prima di qualsiasi query al database.
GDPR
- Consenso esplicito configurabile prima dell’invio dell’email.
- Per il limite anti-spam, l’email non è conservata in chiaro: viene utilizzato solo un hash salato (con la chiave segreta del negozio).
- I record scaduti vengono eliminati automaticamente (pulizia) — vedi sezione successiva.
- Nessun dato viene trasmesso a servizi terzi: tutto resta nel tuo database PrestaShop.
- In caso di richiesta di cancellazione di un cliente, elimina le sue righe nella tabella
ps_df_savecart(colonnaemail).
Pulizia dei link scaduti
Tre opzioni, dalla più semplice alla più automatizzata:
- Pulsante manuale — nella pagina di configurazione del modulo, «Elimina le voci scadute».
- Modulo CronJobs — installa il modulo gratuito CronJobs di PrestaShop: l’hook
actionCronJobdel modulo viene chiamato automaticamente e attiva la pulizia. - Crontab di sistema — pianifica una chiamata regolare al cron del tuo negozio secondo la configurazione del server.
Statistiche
La pagina di configurazione mostra quattro contatori in tempo reale: totale salvati, attivi (non scaduti), scaduti (in attesa di pulizia) e ripristinati (link utilizzati almeno una volta). Il rapporto ripristinati / totale fornisce il tasso di conversione della funzionalità.
Multinegozio
Il modulo è compatibile con il multinegozio: ogni salvataggio memorizza l’ID del negozio di origine, utilizzato durante il ripristino. La configurazione segue il contesto negozio standard di PrestaShop.
Risoluzione dei problemi
L’email non arriva
- Verifica l’invio email globale del negozio: Parametri avanzati > E-mail > Prova invio.
- Controlla la cartella spam del destinatario.
- Consulta i log: Parametri avanzati > Log (gli errori del modulo hanno il prefisso
[dfsavecart]).
Il blocco non appare nella pagina del carrello
- Verifica che il modulo sia attivo nella sua configurazione.
- Verifica che il carrello contenga almeno un prodotto (il blocco è nascosto con carrello vuoto).
- Verifica la posizione scelta: alcuni temi non implementano l’hook
displayShoppingCartFooter— passa a «Nel carrello» o «Entrambi». - Svuota la cache: Parametri avanzati > Prestazioni > Svuota cache.
Messaggio «Token di sicurezza non valido»
- La pagina del carrello è rimasta aperta troppo a lungo e la sessione è scaduta: ricarica la pagina e riprova.
Messaggio «Troppe richieste per questo indirizzo»
- Il limite anti-spam giornaliero è stato raggiunto per questa email. Aumenta il limite nella configurazione o attendi 24 h.
Disinstallazione
La disinstallazione elimina la tabella ps_df_savecart (tutti i carrelli salvati vengono persi) e tutte le chiavi di configurazione. Non resta alcun residuo nel database né nei file.