Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Magento programmatically add product image

Tags:

php

magento

I have to create a simple Magento 1.6.x import agent that suppose to create/update products and their images. Could someone advise me how to add product image without having to use the magento API?

The api performance turned out to be very poor and I am starting to be a little frustrated.. :-(

I have found some other questions regarding this problem, but none of them concerns with adding images to the product.

This is what I came with:

$product->setIsMassupdate(true)
    ->setExcludeUrlRewrite(true)
    ->setManufacturer($this->addManufacturers(utf8_encode($record[4])))
    ->setSku($record[3])
    ->setAttributeSetId($this->attribute_set)# 9 is for default
    ->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE)
    ->setName(utf8_encode($record[5]))
    ->setCategoryIds($this->getCategories(array($record[0], $record[1], $record[2]))) # some cat id's,
    ->setWebsiteIDs(array(1)) # Website id, 1 is default
    ->setDescription(utf8_encode($record[6]))
    ->setShortDescription($this->shortText(utf8_encode($record[6]), 150))
    ->setPrice($price) # Set some price
    ->setSpecialPrice($special_price)
    ->setWeight($record[12])
    ->setStatus( Mage_Catalog_Model_Product_Status::STATUS_ENABLED )
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
    ->setTaxClassId(2)     // default tax class
    ->setPixmaniaimg($record[10])
    ->setStockData(array('is_in_stock' => $inStock, 'qty' => $qty))
    ->setCreatedAt(strtotime('now'));

Can someone help me with adding images directly without the API?

Thanks

Lukas

like image 241
Bery Avatar asked Dec 10 '11 13:12

Bery


People also ask

How do I upload product images to Magento?

Upload product image files on local server. Upload the image files to the default folder for importing product images. Normally, you may use this path: pub/media/import. However, a different folder can be specified for the files on Magento server and the new path can be defined during the importing process.

How can upload image in Magento Admin?

Open the Admin panel of your Magento 2 store. Select the Products tab and click the Catalog option. From here, you need to select a product to add an image for. When done, go to the Images and Videos section and hit the Camera icon.


2 Answers

I did this in Magento 1.6.1. Just put your image URL paths in the first array and you are good to go.

Also look at Mage_Catalog_Model_Product to become familiar with addImageToMediaGallery() and other methods you'll undoubtedly need to be aware of in the future.

// Add three image sizes to media gallery
$mediaArray = array(
    'thumbnail'   => $putPathHere,
    'small_image' => $putPathHere,
    'image'       => $putPathHere,
);

// Remove unset images, add image to gallery if exists
$importDir = Mage::getBaseDir('media') . DS . 'import/';

foreach($mediaArray as $imageType => $fileName) {
    $filePath = $importDir.$fileName;
    if ( file_exists($filePath) ) {
        try {
            $product->addImageToMediaGallery($filePath, $imageType, false);
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    } else {
        echo "Product does not have an image or the path is incorrect. Path was: {$filePath}<br/>";
    }
}
like image 166
Zachary Schuessler Avatar answered Oct 01 '22 11:10

Zachary Schuessler


set_time_limit(0);

ini_set('memory_limit', '4095M');

error_reporting(E_ALL);

ini_set('display_errors', 1);

require_once '../app/Mage.php';

umask(0);

Mage::setIsDeveloperMode(true);

$storeID = Mage_Core_Model_App::ADMIN_STORE_ID;

Mage::app()->setCurrentStore($storeID);



$destination = Mage::getBaseDir() . '/import/images/' . $image;

$product->addImageToMediaGallery($destination, array('image', 'thumbnail', 'small_image'), false, false);

}

This will set the base image.

like image 34
Amit Singh Avatar answered Oct 01 '22 13:10

Amit Singh