本文在Magento CE 1.7.0.1版本下通过。
Magento通过csv表格批量导入产品时,不可避免的要遇到多个产品图片导入的问题。 不知道为什么,一直在细节上把握很好的Magento,竟没有解决这个重要问题。
解决方法:复制文件下面文件到local代码池
1 |
app/code/core/Mage/Catalog/Model/Convert/Adapter/Product.php |
在saveRow()函数的结尾部分增加导入多图Gallery的逻辑。如下:
01 |
public function saveRow( array $importData ) |
07 |
$galleryData = explode ( ';' , $importData [ "gallery" ]); |
09 |
foreach ( $galleryData as $gallery_img ) |
17 |
$product ->addImageToMediaGallery(Mage::getBaseDir( 'media' ) . DS . 'import' . $gallery_img , null, false, false); |
20 |
catch (Exception $e ) {} |
23 |
$product ->setIsMassupdate(true); |
24 |
$product ->setExcludeUrlRewrite(true); |
导入多图时,相应地在csv表格中增加一列,列名为:gallery。多张图片之间以英文分号(;)来分开,并去掉首图。
假设某产品有三张图片,位于media/import/2012/文件夹下,分别是a.jpg, b.jpg, c.jpg,其中a.jpg为首图。则导入csv表格(片段)如下:
1 |
image small_image thumbnail gallery |
2 |
----------- ----------- ----------- ----------------------- |
3 |
/2012/a.jpg /2012/a.jpg /2012/a.jpg /2012/b.jpg;/2012/c.jpg |
需要注意的是:当产品文字信息变化了,在csv表格中修改,然后重复导入,这样会造成产品图片重复,可以先删除掉该产品再导入。另外一个好方法是: 删掉csv表格中的image, small_image, thumbnail, gallery等列,再导入。