问题描述
我必须创建一个简单的 Magento 1.6.x 导入代理,用于创建/更新产品及其图像.有人可以告诉我如何在不使用 magento API 的情况下添加产品图片吗?
I have to create a simple Magento 1.6.x import agent that suppose to create/update products and their images. Could someone advise me how to add product image without having to use the magento API?
结果证明 api 性能很差,我开始有点沮丧.. :-(
The api performance turned out to be very poor and I am starting to be a little frustrated.. :-(
我发现了一些关于此问题的其他问题,但没有一个与向产品添加图像有关.
I have found some other questions regarding this problem, but none of them concerns with adding images to the product.
这是我带来的:
$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'));
有人可以帮我在没有 API 的情况下直接添加图片吗?
Can someone help me with adding images directly without the API?
谢谢
卢卡斯
推荐答案
我在 Magento 1.6.1 中做到了这一点.只需将您的图片 URL 路径放在第一个数组中即可.
I did this in Magento 1.6.1. Just put your image URL paths in the first array and you are good to go.
另请参阅 Mage_Catalog_Model_Product 以熟悉 addImageToMediaGallery() 和您无疑需要熟悉的其他方法将来知道.
Also look at Mage_Catalog_Model_Product to become familiar with addImageToMediaGallery() and other methods you'll undoubtedly need to be aware of in the future.
// 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/>"; } }