使用产品导入图像的步骤

时间:2013-10-30 10:45:10

标签: magento magento-1.7

使用图片导入产品的步骤是什么。我的意思是 - 图像,确切地说。 所以我现在有了这个代码:

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的函数来实现这个“运动”,这是正确的程序吗?

1 个答案:

答案 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中,其中XY是文件名的第一个字母。因此,Magento根据文件名中的前两个字母创建两个级别的子文件夹。此逻辑不直接存在于addImageToMediaGallery中,而是位于Mage_Catalog_Model_Product_Attribute_Backend_Media::addImage()

magento_root:app / code / core / Mage / Catalog / Model / Product / Attribute / Backend / Media.php