La colonna "file caricabile" nel csv non si riferisce agli allegati ma alla possibilità per l'utente/visitatore di uploadare dei file dal front-end.
Avevo la necessità di importare centinaia di files come allegati pdf e ho risolto con pochi cambiamenti:
1/ Primo, fai un backup dei tuoi file e del tuo database per ripristinare i tuoi file in caso di errore.
2a/ in classes/attachment.php alla fine del file appena prima l'ultima }, aggiungi questo:
public function addAttachment($autodate = true, $nullValues = false)
{
$return = parent::add($autodate, true);
return $return;
}
public static function addAttachmentImport($filename, $name, $description)
{
$attachment = new Attachment();
$languages = Language::getLanguages();
foreach ($languages as $language)
$attachment->name[$language['id_lang']] = strval($name);
$attachment->description[$language['id_lang']] = $description;
$attachment->file = sha1($filename);
$attachment->file_name = $filename;
$path_file = _PS_DOWNLOAD_DIR_.$filename;
$attachment->file_size = filesize($path_file);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$attachment->mime = finfo_file($finfo, $path_file);
$attachment->addAttachment();
return (int)$attachment->id;
}
public static function addAttchmentProductImport($id_product, $id_attachment)
{
return Db::getInstance()->execute('
INSERT INTO `'._DB_PREFIX_.'product_attachment` (`id_attachment`, `id_product`)
VALUES ('.(int)$id_attachment.', '.(int)$id_product.')
');
}
2b/ in controller/admin/AdminImportController.php
cerca
case $this->entities[$this->l('Products')]:
dopo nella lista dei campi disponibili cerca
'delete_existing_images'=> array('label' => $this->l('Delete existing images (0 = No, 1 = Yes)')),
just below, add this
'delete_existing_attachments' => array('label' => $this->l('Delete existing attachments (0 = No, 1 = Yes)')),
'attachment' => array('label' => $this->l('attachment')),
Then in the same file, search for
Feature::cleanPositions();
subito sotto inserisci questo
// Attachment files import
//delete existing attachments if "delete_existing_attachments" is set to 1
if (isset($product->delete_existing_attachments))
if ((bool)$product->delete_existing_attachments)
$product->deleteAttachments();
$attachments = get_object_vars($product);
if (isset($attachments['attachment']) && !empty($attachments['attachment']))
foreach (explode($this->multiple_value_separator, $attachments['attachment']) as $single_attachment)
{
$tab_attachment = explode('|', $single_attachment);
$attachment_filename = isset($tab_attachment[0]) ? $tab_attachment[0] : '';
$attachment_name = isset($tab_attachment[1]) ? trim($tab_attachment[1]) : $attachment_filename ;
$attachment_description = isset($tab_attachment[2]) ? trim($tab_attachment[2]) : '';
if(!empty($attachment_filename))
{
$id_attachment = (int)Attachment::addAttachmentImport($attachment_filename, $attachment_name, $attachment_description);
Attachment::addAttchmentProductImport($product->id, $id_attachment);
Product::updateCacheAttachment($product->id);
}
}
3/ Inserisci i tuoi file da uploadare nella directory /download
RICORDA i nomi dei files non devono contenere spazi.
4/ Nel tuo fil csv
Puoi aggiungere più file allegati per lo stesso prodotto.
Per ogni file devi specificare il filename, dopo puoi specificare un nome e una descrizione. Nome e descrizione sono opzionali.
Per separare filename, nome e descrizione, usa "|" come separatore.
Aggiungi queste due colonne:
- Attachment (filename|nome|descrizione)
- Delete existing attachment (0 = No, 1 = Yes)
Esempio per la colonna "Attachment" (qui il tuo separatore sarà %):
filename1.pdf|Nome del mio primo pdf|Descrizione del mio primo pdf%filename2.pdf%filename3.pdf
Fine
Cerca articoli della Knowledge Base
Fix per upload massivo di allegati Prestashop (es. file PDF come schede prodotto)
Hai trovato utile quest'articolo?
Articoli Correlati
-
Come reimpostare gli articoli di Prestashop che non compaiono nella ricerca.
Andare su Parametri Negozio -> Cerca -> Alla voce INDICIZZAZIONE cliccare Ricostruisci l'intero indice e cliccare Salva... -
Inserire un avviso nel checkout di Amedei (ad esempio spedizioni durante il periodo Natalizio)
Cercare nei file del sito cart-summary-totals.tpl Percorso file: themes/amedei/templates/checkout/_partials/cart-summary-totals.tplE sostituire i... -
Traduzioni Prestashop - se la traduzione è di un modulo come cambiarla perchè compaia nelle traduzioni del tema
Nel TPL cambiare MOD con D e settare la traduzione.Poi andare su TEMA/TEMPLATES/PAGE.TPL e inserire la stringa della traduzione fra {block name='page_...