2013-08-28 14 views
6

Mi sto bloccando con immagini che non vengono visualizzate con i loro prodotti. Quando creo un prodotto e inserisco manualmente un'immagine con quel prodotto attraverso (gestisci prodotti) l'immagine mostra quale è grande. Tuttavia abbiamo più di 1000 immagini di prodotto che devono essere caricate, (tutte le informazioni sul prodotto sono già in su, ho solo bisogno di aggiungere le immagini) Ho esportato il file CSV dei prodotti e l'indirizzo dell'immagine di lavoro è/n/g/image1 .jpg L'ho poi copiato, ma ho cambiato l'immagine in image2.jpg, image3.jpg ecc. Quindi ho caricato le nuove immagini in quella cartella sul nostro server pensando che fosse sufficiente. Quindi caricare il file CSV soffiare sulla cache e reindicizzare i dati, ma nessuna nuova immagine mostra e peggio l'immagine di lavoro non viene visualizzata. Ho inserito i dettagli dell'immagine, small_image e miniatura nel CSV. Tutte le immagini sono correttamente dimensionate, ecc.Magento importazione immagini

Ulteriori informazioni possono consentire di dirmi dove posso avere solo 1 cartella di immagini nella directory in cui sono memorizzate tutte le mie immagini? Grazie

sto usando Magento versione 1.7.0.2

+0

Dettagli dipendenza Non ho media/importazione che posso vedere che molte persone hanno nella loro directory. – user1035650

risposta

14

Prima di tutto la vostra immagine deve memorizzare nella directory media>import

poi nel vostro file CSV basta scrivere in immagine /imagename.jpg colonna

troverà lo stesso nome immagine nella directory di importazione, se l'immagine esiste allora caricherà l'immagine

EDIT

se non si dispone di directory di importazione poi semplicemente crearlo

+1

Se non ho media/import posso semplicemente crearlo nella directory? Ho i media quindi/catalogo/cliente ecc. Non c'è una cartella di importazione perché non ho impostato questo. Esiste tuttavia var/import ma che contiene i miei file CSV importati. – user1035650

+0

si dovrebbe creare la cartella se non lo è –

+2

Grazie mille volte –

3

Mi dispiace dirlo, ma non c'è più in corso dietro le quinte con le immagini di Magento che semplicemente mettendo un nome di file nel database e il collegamento alla tua immagine. La generazione della cache da sola è piuttosto complessa. Credo che farai fatica a farlo nel modo in cui stai tentando.

Detto questo, ho un suggerimento. Dato che le tue immagini sono già sul server, ti suggerisco di scrivere un semplice script php per dire a Magento di collegarle all'immagine del prodotto. Questo potrebbe essere automatizzato, ma ti darò un piccolo esempio qui sotto ...

Per allegare un'immagine, si dovrebbe semplicemente accedere alla URL come questo http://yoursite.com/imageattacher.php?sku=YOURSKU&image=yourimagefilename.jpg

Lo script sarebbe come questo .. crea un file nel tuo ROOT Magento e chiamalo imageattacher.php. Carica le tue immagini nella directory di importazione dei media magento. Non ho provato questo, ma dovrebbe funzionare.

<?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(); 
    } 

?> 

Vai a questa http://www.danneh.org/2012/05/creating-products-programmatically-magento/

+0

Grazie, proverò a farlo se è l'ultima opzione. – user1035650

0

Il problema, alla fine, era che non c'era una cartella di importazione nella directory dei media. Le immagini sono state caricate in questa cartella. La colonna immagine nel CSV è stata modificata in /image1.jpg che ha permesso loro di mostrare sul sito web.

0

Ho dovuto importare un gruppo di immagini di prodotti Magento di recente che sono state tutte nominate da SKU (ad esempio 123456.jpg). Questo è lo script che ho usato per importarli, parti delle quali sono basate sulla risposta di CarComp. Funzionerà solo con SKU numerici (ad esempio 123456) ma potrebbe essere facilmente modificato per soddisfare quelli alfanumerici.

<?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(); 
?> 
Problemi correlati