Guida completa all'installazione, configurazione e uso di Cart Cleaner. Per dubbi non coperti qui, scrivi a supporto@i-creativi.com.
Cart Cleaner è progettato per PrestaShop 8.x. Non è retrocompatibile con 1.7. Verifica prima di procedere:
/modules/, /var/logs/crontab o equivalente (hosting shared: pannello cron del tuo provider)Il modulo non richiede estensioni PHP aggiuntive oltre a quelle standard di PrestaShop.
Due modalità. L'upload ZIP è quella raccomandata, FTP manuale è utile per hosting con limiti sul peso upload.
cartcleaner.zip dall'area clienti dopo l'acquisto.cartcleaner.zip localmente.cartcleaner/ via FTP in /modules/ del tuo PrestaShop./var/logs/ o timeout durante la creazione tabella.
La pagina di configurazione ha quattro parametri. I default sono quelli che consigliamo out-of-the-box: cambiali solo se hai ragioni specifiche.
| Parametro | Default | Range | Significato |
|---|---|---|---|
CARTCLEANER_BATCH_SIZE |
500 | 10–5000 | Carrelli processati per ciclo |
CARTCLEANER_LOG_RETENTION |
90 | ≥ 1 | Giorni di retention log |
CARTCLEANER_ORDER_PROTECTION |
1 | 0 / 1 | Hook validateOrder ON/OFF |
CARTCLEANER_CRON_TOKEN |
(auto) | 32 char | Token di sicurezza cron |
max_execution_time = 30s, 500 è sicuro anche con 40.000 carrelli. Alza a 1.000 o più solo se hai server dedicato. Scendi a 100 se l'hosting va spesso in timeout.
Il cron è opzionale ma raccomandato. Senza cron il modulo continua a funzionare (i tre hook sono sufficienti), ma perdi la manutenzione automatica: sweep delle regole residue e purga log.
Dal backoffice del modulo copia l'URL già compilato con il tuo token. Il formato è:
# ogni notte alle 3:00
0 3 * * * curl -s "https://tuoshop.com/module/cartcleaner/cron?token=XXXXXXXX" > /dev/null 2>&1
Se sospetti che il token sia stato esposto (es. in un log pubblico o un commit Git), rigeneralo dal backoffice salvando un nuovo valore. Ricordati di aggiornare anche il comando crontab.
Il modulo registra tre hook in fase di installazione. Puoi verificarne la registrazione dal backoffice in Moduli → Posizione.
Layer 01 · pulizia reattiva. Si attiva ogni volta che l'entità CartRule viene aggiornata. Il modulo filtra gli eventi in cui active == 0 e avvia la pulizia dei carrelli collegati.
Layer 02 · save-time guard. Si attiva a ogni persistenza del Cart. Il modulo verifica che tutte le cart rule applicate al carrello siano ancora attive. Quelle scadute nel frattempo vengono rimosse.
Layer 03 · last-line defense. Si attiva prima della finalizzazione dell'ordine. Se una regola inattiva è sopravvissuta, viene rimossa. Questo layer è toggleabile tramite CARTCLEANER_ORDER_PROTECTION.
Il modulo crea una singola tabella in installazione e la rimuove in disinstallazione.
CREATE TABLE ps_cartcleaner_log (
id_log INT UNSIGNED NOT NULL AUTO_INCREMENT,
id_cart_rule INT UNSIGNED NOT NULL,
cart_rule_name VARCHAR(255) NULL,
cart_rule_code VARCHAR(64) NULL,
carts_found INT UNSIGNED DEFAULT 0,
carts_cleaned INT UNSIGNED DEFAULT 0,
carts_errors INT UNSIGNED DEFAULT 0,
source VARCHAR(16) NOT NULL,
id_employee INT UNSIGNED NULL,
details TEXT NULL,
date_add DATETIME NOT NULL,
PRIMARY KEY (id_log),
INDEX (id_cart_rule),
INDEX (source),
INDEX (date_add)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Valori possibili per source: hook, manual, cron, checkout.
Il modulo non modifica alcuna tabella core di PrestaShop. L'interazione è limitata a lettura su ps_cart_rule e DELETE su ps_cart_cart_rule.
Verifica in Moduli → Posizione che CartCleaner sia registrato su actionObjectCartRuleUpdateAfter. Se manca, esegui:
$php bin/console prestashop:module reset cartcleaner
Il token è errato o scaduto. Copia l'URL aggiornato dal backoffice e rimpiazza la riga in crontab. Ricorda: il token è case-sensitive.
Hai troppi carrelli/regole in contemporanea. Abbassa CARTCLEANER_BATCH_SIZE a 100 o 200 e riprova. In alternativa usa il cron orario invece dello sweep manuale.
Cart Cleaner non tocca mai ordini già validati. Opera solo sulla tabella ps_cart_cart_rule, che è distinta da ps_order_cart_rule. Se vedi modifiche su ordini, non è Cart Cleaner.
Dal backoffice del modulo clicca Esporta CSV sopra la tabella Storico. Ottieni un file UTF-8 con BOM (Excel italiano apre correttamente gli accenti), separatore ;, campo employee_name già risolto via JOIN con la tabella employee.
Per backup completi via riga di comando resta sempre possibile usare mysqldump:
$mysqldump -u USER -p DB ps_cartcleaner_log > log.sql
Dal backoffice: Moduli → Module Manager, trova Cart Cleaner, clicca il menu ⋯ → Disinstalla.
La disinstallazione:
ps_cartcleaner_log (e tutti i log con essa)CARTCLEANER_* da ps_configuration