2013-08-28 24 views
6

Ich stehe fest mit Bildern, die nicht mit ihren Produkten angezeigt werden. Wenn ich ein Produkt erstelle und ein Bild manuell mit diesem Produkt einfüge (Produkte verwalten), zeigt das Bild an, was großartig ist. Allerdings haben wir über 1000 Produktbilder, die hochgeladen werden müssen (alle Produktinformationen sind bereits vorhanden. Ich muss nur die Bilder hinzufügen) Ich habe die CSV-Datei des Produkts exportiert und die Arbeitsbildadresse ist/n/g/image1 .jpg Ich habe das dann kopiert, aber ändere das Bild in image2.jpg, image3.jpg usw. Ich habe dann die neuen Bilder in dieses Verzeichnis auf unserem Server hochgeladen und dachte, das reicht. Ich lade dann die CSV-Datei hoch, blase den Cache und reinde die Daten neu, aber es werden keine neuen Bilder angezeigt und das Arbeitsbild wird nicht angezeigt. Ich habe Bild, small_image und Thumbnail Details in der CSV ausgefüllt. Alle Bilder sind richtig groß usw.Magento Importieren von Bildern

Kann mir noch mehr sagen, wo ich nur 1 Bildordner in dem Verzeichnis haben kann, wo alle meine Bilder gespeichert sind? Dank

Ich bin mit Magento Version 1.7.0.2

+0

Sucht Details Ich habe keine Medien/Import, die ich sehen kann, viele Leute haben in ihrem Verzeichnis. – user1035650

Antwort

14

Zunächst sollten Sie Ihr Bild speichern in media>import Verzeichnis

dann in der CSV-Datei schreiben nur in Bildspalte /imagename.jpg

Es wird der gleiche Bildname im Importverzeichnis gefunden, wenn das Bild vorhanden ist, wird das Bild hochgeladen

EDIT

wenn Sie Import-Verzeichnis nicht haben dann einfach erstellen Sie es

+1

Wenn ich keinen Medien/Import habe, kann ich das einfach im Verzeichnis erstellen? Ich habe Medien dann/Katalog/Kunde usw. Es gibt keinen Importordner, da ich dies nicht eingerichtet habe. Es gibt jedoch var/import, aber das enthält meine importierten CSV-Dateien. – user1035650

+0

sollten Sie Ordner erstellen, wenn nicht –

+2

Vielen Dank mal eine Million –

3

Es tut mir leid zu sagen, aber es gibt mehr hinter den Kulissen mit magento Bilder geht, die es einfach einen Dateinamen in der Datenbank setzen und verlinke zu deinem Bild. Die Cache-Generation allein ist ziemlich komplex. Ich glaube, es wird dir schwer fallen, es so zu machen, wie du es versuchst.

Das gesagt, ich habe einen Vorschlag. Da sich Ihre Bilder bereits auf dem Server befinden, schlage ich vor, dass Sie ein einfaches PHP-Skript schreiben, das Magento anweist, sie an das Produktbild anzuhängen. Dies könnte automatisiert werden, aber ich werde Ihnen ein kleines Beispiel unten geben ...

ein Bild anzuhängen, würden Sie einfach die URL wie diese navigieren http://yoursite.com/imageattacher.php?sku=YOURSKU&image=yourimagefilename.jpg

Das Skript so sein würde .. Erstellen Sie eine Datei in Ihrem Magento ROOT und nennen Sie sie imageattacher.php. Laden Sie Ihre Bilder in das Import-Verzeichnis von Magento Media hoch. Ich habe das nicht getestet, aber es sollte funktionieren.

<?php 
    // Initialize magento for use outside of core 
    umask(0); 
    require_once 'app/Mage.php'; 
    Mage::app('admin'); 

    // Get the variables from the URL 
    $sku = $_GET["sku"]; 
    $imageName = $_GET["image"]; 

    // get the image from the import dir 
    $import = Mage::getBaseDir('media') . DS . 'import/' . $imageName; 

    // Load the product by sku 
    $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku); 

    // if the product exists, attempt to add the image to it for all three items 
    if ($product->getId() > 0) 
    { 
     // Add the images and set them for their respective usage (the radio button in admin) 
     $product->addImageToMediaGallery($import,array('image', 'small_image', 'thumbnail'),false,false); 

     // Make the changes stick 
     $product->save(); 
    } 

?> 

Sehen Sie diese http://www.danneh.org/2012/05/creating-products-programmatically-magento/

+0

Dank Ich werde versuchen, wenn es die letzte Option ist. – user1035650

0

Die Frage am Ende war, dass es nicht ein Import-Ordner unter dem Medienverzeichnis war. Die Bilder wurden in diesen Ordner hochgeladen. Die Bildspalte in der CSV wurde in /image1.jpg geändert, wodurch sie auf der Website angezeigt werden konnten.

0

Ich musste vor kurzem eine Reihe von Magento-Produktbildern importieren, die alle nach SKU benannt wurden (zB 123456.jpg). Dies ist das Skript, das ich verwendet habe, um sie zu importieren. Teile davon basieren auf der Antwort von CarComp. Es funktioniert nur für numerische SKUs (z. B. 123456), könnte aber relativ leicht für alphanumerische geändert werden.

<?php 
require_once(__DIR__ . "/app/Mage.php"); 
Mage::app('admin'); 

class Sku_ImageLoader { 
    private $_uploadDir; 
    private $_imagePaths; 

    public function setUploadDirectory($dir = null) { 
     if (empty($dir)) { 
      if (isset($this->_uploadDir)) return $this; 
      $dir = 'upload';    
      } 
     $this->_uploadDir = Mage::getBaseDir('media') . DS . $dir; 
     // mkdir($this->_uploadDir . DS . "/loaded", 0770); 
     return $this; 
    } 

    public function load() { 
     $this->setUploadDirectory(); 

     // Match product images like 123456.jpg 
     $pattern = '[0-9][0-9][0-9][0-9][0-9][0-9].{jpg,gif,png}'; 

     chdir($this->_uploadDir); 
     $this->_imagePaths = glob($pattern, GLOB_BRACE); 
     return $this; 
    } 

    public function showFiles() { 
     $this->load(); 
     echo "\r\n\r\nSorry, I wasn't able to upload the following image files in " . $this->_uploadDir . "\r\n\r\n<pre>\r\n"; 
     print_r($this->_imagePaths); 
     return $this; 
    } 

    private function _addImage($path) { 
     $sku = (string)intval($path); 
     try { 
      echo "Loading SKU: {$sku} ... "; 
      $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku); 
      // if the product exists, attempt to add the image to it for all three items 
      if (strpos(get_class($product), 'Catalog_Model_Product') !== false && $product->getId() > 0) { 
       $product->addImageToMediaGallery($path,array('image', 'small_image', 'thumbnail'),false,false); 
       $product->save(); 
       echo " ok \r\n"; 
       return true; 
      } 
     } catch (Exception $e) { 
      echo "Exception thrown for {$sku}: " . $e->getMessage() . "\r\n"; 
     } 
     echo " (FAILED) \r\n"; 
     return false; 
    } 

    private function _moveImage($path) { 
     // rename($path, 'loaded' . DS . $path); 
     unlink($path); 
    } 

    public function import() { 
     echo "<pre>\r\n"; 
     if (!isset($this->_imagePaths)) $this->load(); 
     foreach ($this->_imagePaths as $path) { 
      if ($this->_addImage($path)) { 
       $this->_moveImage($path); 
      } 
     } 
     return $this; 
    } 

} 

$u = new Sku_ImageLoader(); 

$u->import()->showFiles(); 
?> 
Verwandte Themen