2011-12-10 14 views
19

Tengo que crear un agente de importación Magento 1.6.x simple que suponga crear/actualizar productos y sus imágenes. ¿Podría alguien recomendarme cómo agregar la imagen del producto sin tener que usar la API de magento?Magento agrega programáticamente la imagen del producto

El rendimiento API resultó ser muy pobre y estoy empezando a ser un poco frustrado .. :-(

he encontrado algunas otras preguntas con respecto a este problema, pero ninguna de ellas tiene que ver con la adición de imágenes a . el producto

Esto es lo que vine 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')); 

alguien me puede ayudar con la adición de imágenes directamente sin la API

Gracias

Lukas

+0

¿Qué versión de Magento? – benmarks

+0

Magento 1.6 - disculpe por omitir eso en mi comentario original .. – Bery

+0

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

Respuesta

38

hice esto en Magento 1.6.1. Simplemente coloque las rutas de URL de su imagen en la primera matriz y estará listo.

Consulte también Mage_Catalog_Model_Product para familiarizarse con addImageToMediaGallery() y otros métodos que sin duda deberá tener en cuenta en el 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

¿Hay alguna manera de crear las imágenes con magento? Me han proporcionado solo un tamaño de la imagen. – Bery

+0

Primero, ¿necesita imágenes separadas? Magento le permite establecer una sola imagen como la miniatura, la imagen pequeña y el tamaño de la imagen, si es necesario. –

+0

Ok. Necesito usar una o más imágenes (máximo de tres imágenes por producto) y luego usar - primero como imagen base, luego small_image y thumbnail. La imagen siempre es la misma (por ejemplo, image1.jpg es base, small_image y 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); 

} 

Esto establecerá la imagen base.

Cuestiones relacionadas