In Magento, the following code will programmatically add an image a product's image gallery
//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);
This, as expected, will add an image to a product's media gallery, and this image will be selected as the product's "Base Image". However, the "small_image" and "thumbnail" images will not be selected for this image.
If the following code is used
$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 will add three new images to the media gallery. One with Base Image selected, one with Small Image selected, and a third with thumbnail.
Is it possible to signal Magento that when you call
$product->addImageToMediaGallery('/tmp/test.png','image',false,false);
that it should automatically generate the small image and the thumbnail image?
Try with:
$product->addImageToMediaGallery('/tmp/test.png',array('image', 'small_image', 'thumbnail'),false,false);
I had the same issue as you. The reason the image gets imported but the Media Attributes (Base, Thumbnail, Small) are not showing, is because it is being set in the Child Websites. Instead you want to set it as a Default Value. In other words the Store ID = 0.
Hope that helps. Sam
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With