$product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false);
但是,我不能想出一个办法来设置图像的标签产品图片导入到Magento的。我尝试使用getMediaGallery获取图库,然后手动设置该值并将其指定回setMediaGallery,但会引发异常。
有没有人有这方面的经验?谢谢!
$product->addImageToMediaGallery($imageFile, array('image','thumbnail','small_image'), false, false);
但是,我不能想出一个办法来设置图像的标签产品图片导入到Magento的。我尝试使用getMediaGallery获取图库,然后手动设置该值并将其指定回setMediaGallery,但会引发异常。
有没有人有这方面的经验?谢谢!
我建议你试试Magmi,你可以分配标签,它超快。
有同样的任务,前几天,它可以通过扩展核心类(把他们在“本地”代码库)
在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
后,你通过这个代码的图像添加到媒体库...
$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();
我照你解释,然后检查了我的应用程序使用正确的类(没事),但即使我在函数调用中更改'label'=>'mylabel',这在Magento 1.6.0中也不起作用。 –
@ D.S。这很奇怪,我已经在EE 1.10上测试了这个代码,并且它工作得很完美。我认为这两个版本之间在这方面并没有什么不同,但是CE可能有另一种保存标签的方法吗?你用xdebug检查过吗?我目前无法检查,尽管 – Zifius
@Zifus不,我只打印当前使用的类名,以确保我的继承类被用来代替Magento的默认值...谢谢你为我演示如何快速覆盖默认的Magento行为:) –