Ich habe eine Magento-Site, meine Produkte werden über eine CSV-Datei hochgeladen. Jetzt muss ich Bilder für diese Produkte aktualisieren. Alle meine Bilder werden heruntergeladen und in meinem Magento Site Medienordner gespeichert. Ich habe eine CSV-Datei mit 'SKU' und 'Absoluter Pfad' von Bilddateien erstellt.Mehrere Bilder zu Magento-Produkten programmgesteuert hinzufügen
Dann versuche ich zu laden, die Bilder mit folgendem Code
<?php
require_once 'app/Mage.php';
Mage::app();
Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);
$importDir = Mage::getBaseDir('media') . DS . 'Products/Vases/';
$file_handle = fopen("sku_image.csv", "r");
while (($data = fgetcsv($file_handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
$productSKU = $data[0];
$ourProduct = Mage::getModel('catalog/product')->loadByAttribute('sku',$productSKU);
for ($c=1; $c < $num; $c++) {
$fileName = $data[$c];
$filePath = $importDir.$fileName;
if (file_exists($filePath)) {
if ($ourProduct) {
$ourProduct->addImageToMediaGallery($filePath, array('image', 'small_image', 'thumbnail'), true, false);
$ourProduct->save();
}
} else {
echo $productSKU . " not done";
echo "<br>";
}
}
}
fclose($file_handle);
?>
Problem ist, dass im letzten Bild auf alle Felder in dem Produktmedienattribut gesetzt. Wie kann ich Bilder zu verschiedenen Medienattributen durch den obigen Code hinzufügen?
Ich habe
mein Code wie folgt geändert<?php
require_once 'app/Mage.php';
Mage::app();
Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);
$importDir = Mage::getBaseDir('media') . DS . 'Products/Vases/';
$file_handle = fopen("sku_image.csv", "r");
while (($data = fgetcsv($file_handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
$productSKU = $data[0];
$ourProduct = Mage::getModel('catalog/product')->loadByAttribute('sku',$productSKU);
for ($c=1; $c<$num; $c++) {
$fileName = $data[$c];
$filePath = $importDir.$fileName;
if (file_exists($filePath)) {
if ($ourProduct) {
if ($c==1) {
$ourProduct->addImageToMediaGallery($filePath, 'rotator_image', false, false);
} else {
$ourProduct->addImageToMediaGallery($filePath, null, false, false);
}
$ourProduct->save();
}
} else {
echo $productSKU . " not done";
echo "<br>";
}
}
echo "<br>";
}
fclose($file_handle);
?>
Nun meine Frontseite ist abgestürzt ist. Kann keine Produkte auf meiner Seite laden. Wer hat Gedanken, was ich vermisse?
‚rotator_image‘ ist ein Attribut in meinem Attribut –
rotator_image ‚Bilder‘, ich glaube nicht, das so funktioniert, Sie denken, es tut. Auch Ihre Schleife ist verdächtig, Sie scheinen mit for for loop über die Spalten zu iterieren. –
Ich habe das Problem gefunden. Wenn es 3 Bild-URLs für einen Sku gibt, fügt der obige Code 5 Bilder zu diesem Produkt hinzu. Zusätzliche 2 Bilder Pfad werden mit einem Beitrag unter der Punktzahl 1 ('_1') dupliziert. Welcher dieser neuen Pfade hat eine gültige Datei im Verzeichnis. Deshalb wird meine Seite abgestürzt. Irgendwelche Gedanken? –