Duplicazione Multinegozio di una Categoria Completa — PrestaShop 8 e 9
Installare e usare la procedura guidata di duplicazione multinegozio: origine, mappatura dei negozi di destinazione, opzioni di copia ed esecuzione a lotti.
Questo modulo aggiunge al back office una procedura guidata che duplica un’intera categoria — con tutti i suoi prodotti, combinazioni, immagini, attributi, prezzi specifici e giacenze — da un negozio verso uno o più altri negozi all’interno dello stesso PrestaShop multinegozio. Questa documentazione copre l’installazione, il funzionamento interno e l’uso passo passo della procedura guidata.
Requisiti
- PrestaShop 8.0 fino a 9.x.
- La modalità multinegozio deve essere attivata (Parametri avanzati e poi Multinegozio), con almeno due negozi.
- Un profilo dipendente con accesso in scrittura al catalogo.
Se il multinegozio è disattivato o esiste un solo negozio, la procedura guidata mostra un messaggio e non consente la duplicazione: non ci sarebbe alcun negozio di destinazione.
Installazione
- Nel back office, apri Moduli e poi Gestore dei moduli.
- Clicca su «Carica un modulo» e rilascia il file ZIP.
- Una volta installato, appare una scheda sotto Catalogo, chiamata «DF Shop Duplicator».
Come funziona
A differenza di un semplice duplicatore di prodotti, il modulo non crea nuove entità prodotto. Si basa sul meccanismo di associazione multinegozio nativo di PrestaShop: un prodotto resta un’entità condivisa, e solo i dati specifici di ciascun negozio vengono copiati verso il negozio di destinazione.
Concretamente, per ogni prodotto duplicato il modulo copia le righe per negozio: product_shop, product_lang, image_shop, product_attribute_shop, stock_available, specific_price (limitato al negozio, carrello escluso), oltre alle associazioni dei corrieri e alle tabelle di corrispondenza necessarie (attributi, gruppi di attributi, caratteristiche, produttore, fornitore, gruppo di imposte).
Conseguenza diretta: nessun riferimento prodotto duplicato, nessuna immagine ricopiata sul disco, e le modifiche globali future di un prodotto continuano a propagarsi a tutti i negozi che lo condividono.
Le categorie, invece, sono gestite diversamente. Poiché l’identificativo del genitore di una categoria (id_parent) è globale, non si può semplicemente «associare» un albero sotto un altro genitore. Il modulo crea quindi nuove categorie sotto il genitore di destinazione che hai designato — o riutilizza quelle già esistenti, secondo l’opzione scelta.
Usare la procedura guidata in 3 passaggi
Passaggio 1 — Negozio e categoria di origine
Seleziona il negozio di partenza e poi la categoria da duplicare nell’albero. Spunta «includi sottocategorie» se desideri elaborare l’intero ramo e non solo la categoria selezionata. Il numero di prodotti interessati viene mostrato per orientarti.
Passaggio 2 — Negozi di destinazione e mappatura
Spunta uno o più negozi di destinazione. Per ogni negozio spuntato appare un albero di categorie: designa in esso la categoria di destinazione sotto cui verranno collocati i prodotti (ed eventualmente l’albero). Per impostazione predefinita è preselezionata la radice del negozio di destinazione.
Passaggio 3 — Opzioni ed esecuzione
Imposta le opzioni di copia (vedi la sezione successiva), controlla il riepilogo e poi avvia la duplicazione. Una barra di avanzamento e un log in tempo reale mostrano il progresso, prodotto per prodotto, insieme agli eventuali avvisi.
Le opzioni nel dettaglio
- Copiare l’albero: ricrea le sottocategorie sotto la categoria di destinazione rispettando la gerarchia. Deselezionata, tutti i prodotti vengono collocati direttamente sotto la categoria di destinazione (modalità «flatten»).
- Riutilizzare le categorie esistenti: invece di ricreare categorie, il modulo trova quelle già presenti sotto il genitore di destinazione per corrispondenza della loro riscrittura di URL. È questo a rendere la duplicazione idempotente.
- Copiare le quantità: duplica la giacenza verso il negozio di destinazione (vedi la gestione delle giacenze più sotto).
- Prezzi specifici: copia i prezzi specifici limitati al negozio.
- Prodotti dei pacchetti (ricorsivo): associa anche i prodotti figli dei pacchetti inclusi nella selezione.
- Reindicizzazione della ricerca: reindicizza ogni prodotto copiato per la ricerca del front office. Utile ma più lento su grandi volumi.
- Dimensione del lotto: numero di prodotti elaborati per passata AJAX (20 per impostazione predefinita, fino a 200). Riducila su un hosting limitato, aumentala per andare più veloce.
Ricreare e riutilizzare le categorie
Quando «Riutilizzare le categorie esistenti» è attivata, il modulo cerca sotto il genitore di destinazione una categoria la cui riscrittura di URL corrisponda a quella di origine. Se ne trova una, la usa; altrimenti ne crea una nuova. Puoi così rieseguire la duplicazione tutte le volte che serve senza accumulare categorie duplicate — ad esempio dopo aver aggiunto nuovi prodotti all’origine.
Per una prima sincronizzazione «piatta» in cui tutti i prodotti devono finire sotto un’unica categoria di destinazione, deseleziona «Copiare l’albero» e lascia spuntata «Riutilizzare le categorie esistenti».
Gestione delle giacenze e condivisione tra negozi
La copia della giacenza tiene conto dell’impostazione di condivisione delle giacenze del gruppo di negozi. Se il negozio di origine e quello di destinazione condividono già lo stesso pool di giacenza, la copia viene saltata: duplicare le quantità creerebbe incoerenze. In caso contrario, le quantità vengono copiate verso il negozio di destinazione. Queste decisioni sono tracciate nel log di esecuzione.
Prodotti dei pacchetti
Se la selezione contiene pacchetti e l’opzione corrispondente è attivata, il modulo associa ricorsivamente i prodotti figli di ciascun pacchetto al negozio di destinazione, affinché il pacchetto resti vendibile. Una protezione evita i cicli in caso di pacchetti annidati.
Cataloghi di grandi dimensioni e ripresa
L’esecuzione avviene per lotti AJAX successivi: il browser concatena le chiamate fino al termine, il che evita qualsiasi timeout PHP anche con diverse migliaia di prodotti e combinazioni. Il job è persistito nel database (tabella dedicata), con un puntatore di posizione: se l’elaborazione viene interrotta (chiusura della scheda, caduta di rete), può riprendere da dove si era fermata invece di ricominciare da zero.
Risoluzione dei problemi
La procedura guidata segnala che il multinegozio non è disponibile
Verifica che la modalità multinegozio sia attivata e che esistano almeno due negozi. La procedura guidata ha bisogno di un negozio di origine e di almeno un negozio di destinazione distinto.
Alcuni prodotti sembrano «mancare» nel negozio di destinazione
Assicurati che la categoria di destinazione sia mappata correttamente nel passaggio 2 e che i prodotti siano attivi. In modalità «flatten», i prodotti vengono collocati sotto l’unica categoria di destinazione, non sotto un albero ricreato.
La giacenza non è stata copiata
È il comportamento previsto se entrambi i negozi condividono lo stesso pool di giacenza. Il log di esecuzione lo segnala con un avviso.
Dopo una seconda esecuzione vedo categorie duplicate
Attiva «Riutilizzare le categorie esistenti». Senza questa opzione, ogni esecuzione ricrea nuove categorie sotto il genitore di destinazione.