Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding Magento's small_image and thumbnail Programmatically

Tags:

php

magento

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?

like image 602
Alan Storm Avatar asked Sep 19 '12 02:09

Alan Storm


2 Answers

Try with:

$product->addImageToMediaGallery('/tmp/test.png',array('image', 'small_image', 'thumbnail'),false,false); 
like image 156
Barbanet Avatar answered Sep 23 '22 04:09

Barbanet


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

like image 23
Samuel Ng Avatar answered Sep 20 '22 04:09

Samuel Ng