Recentemente mi è capitato di dover caricare le immagini dei prodotti (circa 2,6 milioni) di un sito eCommerce che utilizza Prestashop come CMS (operazione portata a termine con lo sviluppo di un programma ad-hoc).
Come Prestashop gestisce le immagini dei prodotti
Prestashop crea per gestire le immagini opera su due fronti, database e filesystem:
Tabelle database relative alle immagini Prestashop
- ps_image
- ps_image_shop
- ps_image_lang
Entriamo nel dettaglio di ogni singola tabella
ps_image
Tabella principale di riferimento per le immagini, ogni record in questa tabella corrisponde fisicamente ad un’immagine.
id_image – ID corrispondente all’immagine, valore rilasciato automaticamente dal database in modo seriale
id_product – ID del prodotto da associare all’immagine
position – Numero in cui si indica l’ordine con il quale si vogliono mostrare le immagini all’interno della scheda del prodotto
cover – Se il valore è “1” l’immagine viene impostata come riferimento, tutte le altre immagini con lo stesso id_product essere “0” (o “null” ma specificare è sempre un bene)
ps_image_shop
Seconda tabella di riferimento, utilizzata per il multishop
id_image – ID corrispondente all’immagine, quello precedentemente creato nella tabella ps_image
id_product – ID del prodotto da associare all’immagine, come già fatto nella tabella ps_image
id_shop – ID dello shop , indicare l’ID dello shop in uso (solitamente “1”) nel caso si stia lavorando in ambienti di shop singolo, altrimenti l’id dello shop di riferimento
ps_image_lang
tabella di riferimento per la lingua
id_image – ID corrispondente all’immagine, quello precedentemente creato nella tabella ps_image id_lang (per shop con una sola lingua indicare solo “1”, nel caso di più lingue inserire ripetere l’operazione di aggiunta record specificando tutti gli id delle lingue in uso)
id_lang – specificare l’ID della lingua (solitamente “1”) in caso di negozi con una sola lingua, altrimenti nel caso di negozi con più lingue impostate ripetere l’operazione di aggiunta record specificando tutti gli altri IDs
Posizionamento files immagini Prestashop
Le immagini vengono salvate sotto la cartella /img/p/ dove c’è una cartella per ogni numero del campo id_image generato nella tabella ps_image.
Esempio:
immagine con id assegnato 9954 verrà salvata nel seguente percorso img/p/9/9/5/4 con nome immagine 9954.jpg
Per il corretto funzionamento di Prestashop è necessario che all’interno delle cartelle dove vengono salvate le immagini ,sia presente almeno l’immagine del prodotto principale (800×800 pixel) con nome file il valore del campo id_image e il file index.php che troviamo anche all’interno nella cartella img/p.
Prestashop, al primo accesso alla scheda del prodotto, creerà tutte le altre miniature richieste ,ovviamente a discapito del tempo di visualizzazione della pagina stessa, a meno che si decida di creare preventivamente le varie miniature ridimensionando e chiamando le immagini secondo le indicazioni specificate nel backend di Prestashop sotto Preferences à Images.
Esempio miniatura:
9954-medium_large.jpg (dimensione di default 125×81 pixel)