Magento在导入过程中设置产品图像标签

Magento在导入过程中设置产品图像标签,magento,Magento,我正在尝试使用将产品图像导入到Magento $product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false); 但是,我无法找到设置图像标签的方法。我尝试使用getMediaGallery获取图库,手动设置值并使用setMediaGallery将其分配回产品,但它引发异常 有人有这方面的经验吗?谢谢 我建议您尝试一下,您可以分配标签,而且速度非常快。几

我正在尝试使用将产品图像导入到Magento

$product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false);
但是,我无法找到设置图像标签的方法。我尝试使用getMediaGallery获取图库,手动设置值并使用setMediaGallery将其分配回产品,但它引发异常


有人有这方面的经验吗?谢谢

我建议您尝试一下,您可以分配标签,而且速度非常快。

几天前也有同样的任务,可以通过扩展核心类(将它们放入“本地”代码池)来解决

Mage/Catalog/Model/Product.php中
向方法
添加新参数
$label='
并将其传递给
$mediaGalleryAttribute->getBackend()->addImage($this,$file,$mediaAttribute,$move,$exclude,$label)

Mage/Catalog/Model/Product/Attribute/Backend/Media.php
中再次添加新参数
$label='
,并将
'label'=>'
更改为
'label'=>$label


HTH

通过此代码将图像添加到媒体库后

$product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false);
…从产品中获取
media\u 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();

我按照您的解释做了,然后检查了我的应用程序是否使用了正确的类(好的),但即使我在函数调用中更改了'label'=>'mylabel',这在Magento 1.6.0中也不起作用。@D.S.奇怪的是,我已经在EE 1.10上测试了这段代码,它工作得非常好。我不认为不同版本之间在这方面有什么不同,但也许CE有另一种保存标签的方法?你和xdebug核对过了吗?我现在无法检查though@Zifus不,我只打印了当前使用的类名,以确保使用继承的类而不是Magento默认值。。。无论如何,感谢您告诉我如何快速覆盖默认的Magento行为:)@D.S.我错过的主要事情是,您的导入适配器
Mage\u目录\u模型\u转换\u适配器\u产品
必须将标签传递给
AddImageToDiagrallery
方法这是最优雅的解决方案。为什么在beyond me的核心文件中还没有这样实现。。。