2011-08-27 63 views
6

我试图用Magento的套装产品图片标签在导入

$product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false); 

但是,我不能想出一个办法来设置图像的标签产品图片导入到Magento的。我尝试使用getMediaGallery获取图库,然后手动设置该值并将其指定回setMediaGallery,但会引发异常。

有没有人有这方面的经验?谢谢!

回答

0

我建议你试试Magmi,你可以分配标签,它超快。

3

有同样的任务,前几天,它可以通过扩展核心类(把他们在“本地”代码库)

Mage/Catalog/Model/Product.php新的参数$label=''添加到方法addImageToMediaGallery 并将它传递给需要解决$mediaGalleryAttribute->getBackend()->addImage($this, $file, $mediaAttribute, $move, $exclude, $label);

Mage/Catalog/Model/Product/Attribute/Backend/Media.php

重新添加新的参数$label=''和改变'label' => '''label' => $label

HTH

+0

我照你解释,然后检查了我的应用程序使用正确的类(没事),但即使我在函数调用中更改'label'=>'mylabel',这在Magento 1.6.0中也不起作用。 –

+0

@ D.S。这很奇怪,我已经在EE 1.10上测试了这个代码,并且它工作得很完美。我认为这两个版本之间在这方面并没有什么不同,但是CE可能有另一种保存标签的方法吗?你用xdebug检查过吗?我目前无法检查,尽管 – Zifius

+0

@Zifus不,我只打印当前使用的类名,以确保我的继承类被用来代替Magento的默认值...谢谢你为我演示如何快速覆盖默认的Magento行为:) –

8

后,你通过这个代码的图像添加到媒体库...

$product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false); 

...获取从产品media_gallery阵列,然后在弹出的最新图像被添加,并且有可以设置标签。

那之后,你可以将其推回media_gallery的图像阵列,下面的代码:

$gallery = $product->getData('media_gallery'); 
$lastImage = array_pop($gallery['images']); 
$lastImage['label'] = $image_label; 
array_push($gallery['images'], $lastImage); 
$product->setData('media_gallery', $gallery); 
$product->save();