cancel
Showing results for 
Search instead for 
Did you mean: 

Product attributes on programmatically product add

Product attributes on programmatically product add

Hi,

I have this code:

<?php
require_once 'app/Mage.php';
umask(0) ;  
Mage::app();

try {
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$product = Mage::getModel('catalog/product');

$product
    ->setWebsiteIds(array(1)) //website ID the product is assigned to, as an array
    ->setAttributeSetId(4) //ID of a attribute set named 'default'
    ->setTypeId('simple') //product type
    ->setCreatedAt(strtotime('now')) //product creation time
    ->setSku('Round Diamonds') //SKU
    ->setName('round diamonds') //product name
    ->setWeight(8.00)
    ->setStatus(1) //product status (1 - enabled, 2 - disabled)
    ->setTaxClassId(4) //tax class (0 - none, 1 - default, 2 - taxable, 4 - shipping)
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) //catalog and search visibility
    ->setManufacturer(28) //manufacturer id
    ->setColor(24)
    ->setNewsFromDate(strtotime('now')) //product set as new from
    ->setNewsToDate('06/30/2015') //product set as new to
    ->setCountryOfManufacture('AF') //country of manufacture (2-letter country code)
    ->setPrice(11.22) //price in form 11.22
    ->setCost(11.11) //price in form 11.22   
    ->setStockData(array(
                       'use_config_manage_stock' => 0, //'Use config settings' checkbox
                       'manage_stock'=>1, //manage stock
                       'min_sale_qty'=>1, //Minimum Qty Allowed in Shopping Cart
                       'max_sale_qty'=>1, //Maximum Qty Allowed in Shopping Cart
                       'is_in_stock' => 1, //Stock Availability
                       'qty' => 1 //qty
                   )
    )
    ->setMetaTitle('test meta title 2')
    ->setMetaKeyword('test meta keyword 2')
    ->setMetaDescription('test meta description 2')
 
    ->setDescription('This is a long description')
    ->setShortDescription('This is a short description')
 
    ->setMediaGallery (array('images'=>array (), 'values'=>array ())) //media gallery initialization
    ->addImageToMediaGallery('media/catalog/product/renkaat/350x350_image1.jpg', array('image','thumbnail','small_image'), false, false) //assigning image, thumb and small image to media gallery
 	->setLeveys(215)
    ->setCategoryIds(array(2, 3)); //assign product to categories
    
$product->save();
}catch(Exception $e){
Mage::log($e->getMessage());
}
?> 

Its adding product and images and all seems to be nice, but that own custom attribute:

->setLeveys(215)

is not working.

Here is the attribute:

What im missing here?

Im using Magento ver. 1.9.3.2

1 REPLY

Re: Product attributes on programmatically product add

I get it, here is the solution:

<?php
require_once 'app/Mage.php';
umask(0) ;  
Mage::app();

try {
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$product = Mage::getModel('catalog/product');

$attribute = Mage::getModel('eav/entity_attribute');
$attribute->loadByCode( 4, 'leveys' );
$values = array();

$valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
	->setAttributeFilter( $attribute->getId() )
	->setStoreFilter( Mage_Core_Model_App::ADMIN_STORE_ID, false)
	->load();

foreach ($valuesCollection as $item) {
	$values[$item->getValue()] = $item->getId();
	
}	

	
$product
    ->setWebsiteIds(array(1)) //website ID the product is assigned to, as an array
    ->setAttributeSetId(4) //ID of a attribute set named 'default'
    ->setTypeId('simple') //product type
    ->setCreatedAt(strtotime('now')) //product creation time
    ->setSku('Round Diamonds') //SKU
    ->setName('round diamonds') //product name
    ->setWeight(8.00)
    ->setStatus(1) //product status (1 - enabled, 2 - disabled)
    ->setTaxClassId(4) //tax class (0 - none, 1 - default, 2 - taxable, 4 - shipping)
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) //catalog and search visibility
    ->setManufacturer(28) //manufacturer id
    ->setColor(24)
    ->setNewsFromDate(strtotime('now')) //product set as new from
    ->setNewsToDate('06/30/2015') //product set as new to
    ->setCountryOfManufacture('AF') //country of manufacture (2-letter country code)
    ->setPrice(11.22) //price in form 11.22
    ->setCost(11.11) //price in form 11.22   
    ->setStockData(array(
                       'use_config_manage_stock' => 0, //'Use config settings' checkbox
                       'manage_stock'=>1, //manage stock
                       'min_sale_qty'=>1, //Minimum Qty Allowed in Shopping Cart
                       'max_sale_qty'=>1, //Maximum Qty Allowed in Shopping Cart
                       'is_in_stock' => 1, //Stock Availability
                       'qty' => 1 //qty
                   )
    )
    ->setMetaTitle('test meta title 2')
    ->setMetaKeyword('test meta keyword 2')
    ->setMetaDescription('test meta description 2')
 
    ->setDescription('This is a long description')
    ->setShortDescription('This is a short description')
 
    ->setMediaGallery (array('images'=>array (), 'values'=>array ())) //media gallery initialization
    ->addImageToMediaGallery('media/catalog/product/renkaat/350x350_Linglong_GreenMax_UHP.jpg', array('image','thumbnail','small_image'), false, false) //assigning image, thumb and small image to media gallery

    ->setCategoryIds(array(2, 3)); //assign product to categories
$product->setleveys( $values['215'] ); // just do whatever you need to code 'Blue' instead of hard-coding it
$product->save();
}catch(Exception $e){
Mage::log($e->getMessage());
}
?>