以编程方式添加Magento的small_image和缩略图

时间:2012-09-19 02:57:34

标签: php magento

在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);        

它应该自动生成小图像和缩略图吗?

3 个答案:

答案 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();