Sincronizzazione Multi-Negozio — Guida all’installazione e alla configurazione
Installare, connettere due negozi PrestaShop e configurare la sincronizzazione del catalogo in modalità push o pull, con cron e gestione dei conflitti.
Questa guida copre l’installazione del modulo Sincronizzazione Multi-Negozio, la connessione tra due installazioni PrestaShop e la configurazione completa della sincronizzazione del catalogo.
Prerequisiti
- Due installazioni PrestaShop da 8.0 a 9.x (i database e l’hosting possono essere distinti).
- L’estensione PHP cURL attiva sul negozio che pilota la sincronizzazione.
- Il webservice attivato sul negozio remoto, con una chiave di accesso dedicata.
Il modulo si installa solo sul negozio che pilota la sincronizzazione. Il negozio remoto necessita unicamente del webservice attivato — non va installato alcun modulo su di esso.
Installazione del modulo
- Nel back-office del negozio che pilota, apri Moduli > Gestore dei moduli.
- Clicca su Carica un modulo e invia il file
dfmultisync.zip. - Una volta installato, il modulo aggiunge il menu Parametri avanzati > DF Multi-Store Sync.
Attivare il webservice sul negozio remoto
Sul negozio da connettere:
- Apri Parametri avanzati > Webservice.
- Imposta Attiva il webservice di PrestaShop su Sì e salva.
- Clicca su Aggiungi una nuova chiave webservice, genera una chiave, poi concedi i permessi
GET,POST,PUTeDELETEsulle risorse:categories,products,images,combinations,stock_availables,specific_priceselanguages. - Salva e copia la chiave generata.
Senza i permessi DELETE su specific_prices, la sincronizzazione dei prezzi specifici fallirà: il modulo replica l’insieme remoto tramite eliminazione e ricreazione.
Aggiungere un sito remoto
- Vai su DF Multi-Store Sync > Siti remoti e poi Aggiungi sito remoto.
- Inserisci un nome, l’URL radice del negozio remoto (es.
https://negozio-b.esempio.com) e la chiave webservice copiata in precedenza. - Salva, poi clicca su Test nell’elenco per verificare la connessione.
Il pulsante Test interroga realmente il webservice remoto. Se fallisce, verifica l’URL (con il protocollo https://), la chiave e che il webservice sia attivo sul lato remoto.
Creare un profilo di sincronizzazione
Un profilo descrive cosa sincronizzare, in quale verso e come arbitrare i conflitti.
Verso: push o pull
- Push — il negozio corrente è la fonte e invia i suoi dati al sito remoto.
- Pull — il sito remoto è la fonte; il negozio corrente riceve i suoi dati.
Entità
Seleziona le entità da sincronizzare. Vengono sempre elaborate in quest’ordine per rispettare le dipendenze: categorie → prodotti → stock → prezzi specifici.
Opzioni
- Sincronizza immagini — in push, le nuove immagini locali vengono inviate; in pull, le immagini vengono scaricate alla creazione del prodotto.
- Sincronizza prezzi specifici — disponibile solo in modalità push.
- Dimensione del lotto — numero di entità elaborate per ciclo (da 1 a 25). Riducila se il server remoto è lento.
Strategie di conflitto
Un conflitto si verifica quando entrambi i negozi hanno modificato la stessa scheda dall’ultima sincronizzazione. Sono disponibili quattro strategie:
- Vince la fonte — la fonte sovrascrive sempre la destinazione.
- Vince la destinazione — le entità in conflitto vengono ignorate.
- Vince il più recente — vengono confrontate le date di modifica.
- Manuale — i conflitti vengono messi in coda per l’arbitraggio.
Avviare una prima sincronizzazione
- Apri la Dashboard del modulo.
- Sulla riga del profilo, clicca su Avvia ora.
- La sincronizzazione viene eseguita a lotti: la barra di avanzamento mostra in tempo reale il numero di entità create, aggiornate, ignorate, in conflitto e in errore.
La sincronizzazione lavora entro un budget di tempo (25 secondi per impostazione predefinita) e riprende automaticamente da dove si era fermata. Su un catalogo grande, più cicli si concatenano senza intervento.
Automatizzare con il cron
- Attiva l’opzione Cron sui profili interessati.
- Copia l’URL di cron mostrato nella dashboard (protetto da un token).
- Aggiungilo alla crontab del tuo server, ad esempio ogni quindici minuti:
*/15 * * * * wget -q -O /dev/null "https://il-tuo-negozio.com/module/dfmultisync/cron?token=IL_TUO_TOKEN"
Il token dell’URL di cron è riservato: autorizza l’avvio delle sincronizzazioni. Non condividerlo e non esporlo pubblicamente.
Risolvere i conflitti
Con la strategia Manuale, i conflitti si accumulano nella scheda Conflitti. Per ogni riga in sospeso:
- Mantieni locale — forza l’invio (push) della versione locale.
- Mantieni remoto — forza il recupero (pull) della versione remota.
- Ignora — segna il conflitto come gestito senza trasferire nulla.
Log e monitoraggio
La scheda Logs conserva lo storico delle operazioni (informazione, avviso, errore), filtrabile per livello e per data. I log vengono eliminati automaticamente dopo 30 giorni.
Risoluzione dei problemi
Il test di connessione fallisce
Verifica che il webservice sia attivato sul lato remoto, che la chiave sia corretta e che il suo profilo di permessi copra le risorse elencate sopra. Assicurati che l’URL includa https://.
Alcuni prodotti vengono ignorati
Il modulo abbina prodotti e combinazioni tramite riferimento. Un prodotto senza riferimento, o con riferimento diverso tra i due negozi, non potrà essere abbinato per lo stock. Inserisci riferimenti coerenti.
I prezzi specifici non si sincronizzano
La sincronizzazione dei prezzi specifici è solo push e richiede il permesso DELETE su specific_prices sul lato remoto.
La sincronizzazione sembra lenta
Riduci la dimensione del lotto del profilo e lascia che il cron concateni i cicli. La prima passata è sempre la più lunga; le successive trasferiscono solo le entità realmente modificate.