在Magento中,以下代码将以编程方式将图像添加到产品的图库中
//set store to admin id so we can save a product
Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);
//load a product with an id of 2514
$product = Mage::getModel('catalog/product')->load('2514');
//add the image
$product->addImageToMediaGallery('/tmp/test.png','image',false,false);
正如预期的那样,这会将图像添加到产品的媒体库中,此图像将被选为产品的“基本图像”。但是,不会为此图像选择“small_image”和“thumbnail”图像。
如果使用以下代码
$product->addImageToMediaGallery('/tmp/test.png','image',false,false);
$product->addImageToMediaGallery('/tmp/test.png','small_image',false,false);
$product->addImageToMediaGallery('/tmp/test.png','thumbnail',false,false);
Magento会将三个新图片添加到媒体库。一个选择了基本图像,一个选择了小图像,另一个选择了缩略图。
当您致电
时,是否有可能向Magento发出信号$product->addImageToMediaGallery('/tmp/test.png','image',false,false);
它应该自动生成小图像和缩略图吗?
答案 0 :(得分:11)
尝试:
$product->addImageToMediaGallery('/tmp/test.png',array('image', 'small_image', 'thumbnail'),false,false);
答案 1 :(得分:0)
我和你有同样的问题。导入图像但未显示媒体属性(基本,缩略图,小)的原因是因为它是在子网站中设置的。相反,您希望将其设置为默认值。换句话说,商店ID = 0。
希望有所帮助。 萨姆
答案 2 :(得分:0)
这对我有用
导入和设置
$id = 2400;
$product = $object_Manager->create('Magento\Catalog\Model\Product')->load($id);
$imageType = ['image', 'small_image', 'thumbnail'];
$imagePath = '/tmp/test.png';
$product->addImageToMediaGallery($imagePath, $imageType, false, false);
$product->setStoreId(0)->save();
只是设置
$id = 2400;
$product = $object_Manager->create('Magento\Catalog\Model\Product')->load($id);
if (!$product->hasImage()) continue;
if (!$product->hasSmallImage()) $product->setSmallImage($product->getImage());
if (!$product->hasThumbnail()) $product->setThumbnail($product->getImage());
$product->setStoreId(0)->save();