2011-12-10 16 views
19

Devo creare un semplice agente di importazione Magento 1.6.x che supponga di creare/aggiornare prodotti e le loro immagini. Qualcuno potrebbe consigliarmi come aggiungere l'immagine del prodotto senza dover utilizzare l'API magento?Magento aggiunge programmaticamente l'immagine del prodotto

Le prestazioni api si è rivelata molto poveri e sto iniziando ad essere un po 'frustrato .. :-(

ho trovato alcune altre domande per quanto riguarda questo problema, ma nessuno di loro preoccupazioni con l'aggiunta di immagini per . il prodotto

Questo è ciò che è venuto con:?

$product->setIsMassupdate(true) 
    ->setExcludeUrlRewrite(true) 
    ->setManufacturer($this->addManufacturers(utf8_encode($record[4]))) 
    ->setSku($record[3]) 
    ->setAttributeSetId($this->attribute_set)# 9 is for default 
    ->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) 
    ->setName(utf8_encode($record[5])) 
    ->setCategoryIds($this->getCategories(array($record[0], $record[1], $record[2]))) # some cat id's, 
    ->setWebsiteIDs(array(1)) # Website id, 1 is default 
    ->setDescription(utf8_encode($record[6])) 
    ->setShortDescription($this->shortText(utf8_encode($record[6]), 150)) 
    ->setPrice($price) # Set some price 
    ->setSpecialPrice($special_price) 
    ->setWeight($record[12]) 
    ->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED) 
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) 
    ->setTaxClassId(2)  // default tax class 
    ->setPixmaniaimg($record[10]) 
    ->setStockData(array('is_in_stock' => $inStock, 'qty' => $qty)) 
    ->setCreatedAt(strtotime('now')); 

qualcuno mi può aiutare con l'aggiunta di immagini direttamente, senza l'API

Grazie

Lukas

+0

Quale versione di Magento? – benmarks

+0

Magento 1.6 - mi dispiace per l'omissione nel mio commento originale .. – Bery

+0

Per Magento 2: http://magento.stackexchange.com/questions/140612/magento-2-save-all-product-data-outside-magento-with -images –

risposta

38

Ho fatto questo in Magento 1.6.1. Metti i tuoi percorsi URL immagine nel primo array e sei a posto.

Guarda anche Mage_Catalog_Model_Product per familiarizzare con addImageToMediaGallery() e altri metodi di cui avrai sicuramente bisogno di essere a conoscenza in futuro.

// Add three image sizes to media gallery 
$mediaArray = array(
    'thumbnail' => $putPathHere, 
    'small_image' => $putPathHere, 
    'image'  => $putPathHere, 
); 

// Remove unset images, add image to gallery if exists 
$importDir = Mage::getBaseDir('media') . DS . 'import/'; 

foreach($mediaArray as $imageType => $fileName) { 
    $filePath = $importDir.$fileName; 
    if (file_exists($filePath)) { 
     try { 
      $product->addImageToMediaGallery($filePath, $imageType, false); 
     } catch (Exception $e) { 
      echo $e->getMessage(); 
     } 
    } else { 
     echo "Product does not have an image or the path is incorrect. Path was: {$filePath}<br/>"; 
    } 
} 
+0

C'è un modo per creare le immagini con Magento? Mi è stato fornito solo una dimensione dell'immagine. – Bery

+0

Per prima cosa, hai bisogno di immagini separate? Magento ti consente di impostare una singola immagine come miniatura, immagine piccola e dimensione dell'immagine se necessario. –

+0

Ok. Ho bisogno di usare una o più immagini (massimo di tre immagini per prodotto) e poi usare - prima come immagine di base, poi piccola_immagine e miniatura. L'immagine è sempre la stessa (ad esempio image1.jpg è base, piccola_immagine e miniatura). – Bery

0
set_time_limit(0); 

ini_set('memory_limit', '4095M'); 

error_reporting(E_ALL); 

ini_set('display_errors', 1); 

require_once '../app/Mage.php'; 

umask(0); 

Mage::setIsDeveloperMode(true); 

$storeID = Mage_Core_Model_App::ADMIN_STORE_ID; 

Mage::app()->setCurrentStore($storeID); 



$destination = Mage::getBaseDir() . '/import/images/' . $image; 

$product->addImageToMediaGallery($destination, array('image', 'thumbnail', 'small_image'), false, false); 

} 

Questo imposterà l'immagine di base.

Problemi correlati