使用图片导入产品的步骤是什么。我的意思是 - 图像,确切地说。 所以我现在有了这个代码:
protected function _getImages($product)
{
$importImagesDirectory = Mage::getBaseDir()."/".Mage::getStoreConfig('xmlimport/product/import_images_dir');
if(file_exists($importImagesDirectory))
{
$addImage['sku'] = (string)$product['PK_Produkt'];
$addImage['_media_image'] = $importImagesDirectory . $this->_getPresentationAttributeValue($product, '@Art="Bild" and @Rang="1"');
$addImage['_media_attribute_id'] = Mage::getSingleton('catalog/product')->getResource()->getAttribute('media_gallery')->getAttributeId();
$addImage['_media_is_disabled'] = 0;
$addImage['_media_position'] = 1;
// the following 4 lines are just acquiring string values - the name of the picture
$addImage['_media_lable'] = $this->_getPresentationAttributeValue($product, '@Art="Bild" and @Rang="1"');
$addImage['image'] = $this->_getPresentationAttributeValue($product, '@Art="Bild" and @Rang="1"');;
$addImage['small_image'] = $this->_getPresentationAttributeValue($product, '@Art="Bild" and @Rang="1"');;
$addImage['thumbnail'] = $this->_getPresentationAttributeValue($product, '@Art="Bild" and @Rang="1"');;
}
else Mage::log('Error! Image with name: ' . $importImagesDirectory . ' does not exist! ', null, 'error_image.log', true);
return $addImage;
}
因此,此数组将与包含正在导入的产品信息的数组合并。现在,我被告知该函数还应该将图像从我的media/import/
文件夹移动到某个catalog/product/
文件夹,因为Magento会查找该文件夹中的图像。如果我只是导入信息,但不移动图像 - 然后没有效果(实际上现在发生)。
所以我问,这是如何工作的,是否有一个来自API的函数来实现这个“运动”,这是正确的程序吗?
答案 0 :(得分:1)
根据this答案,您需要使用addImageToMediaGallery
。
您需要拥有catalog/product
个对象的实例。这应该很简单$product = Mage::getModel('catalog/product');
,然后您需要从数据库加载其数据,例如$product->load($id);
。
$product->addImageToMediaGallery($filePath, $imageType, false);
Magento将产品文件存储在media/catalog/product/X/Y/XYfilename.ext
中,其中X
和Y
是文件名的第一个字母。因此,Magento根据文件名中的前两个字母创建两个级别的子文件夹。此逻辑不直接存在于addImageToMediaGallery
中,而是位于Mage_Catalog_Model_Product_Attribute_Backend_Media::addImage()
。
magento_root:app / code / core / Mage / Catalog / Model / Product / Attribute / Backend / Media.php