How to update settings programmatically in purple?

I have many products with custom settings, now I have a requirement to update only custom settings through the csv file. so how can we do this programmatically?

+2
php mysql product magento
source share
3 answers

I found one solution for updating user options programmatically - this is a solution

$product = Mage::getModel('catalog/product')->load($product_id); $values = array(); foreach ($product->getOptions() as $o) { $p = $o->getValues(); } } foreach($p as $v) { $values[$v->getId()]['option_type_id']= $v->getId(); $values[$v->getId()]['title']= 'test'; $values[$v->getId()]['price']= 23; $values[$v->getId()]['price_type']= 'fixed'; $values[$v->getId()]['sku']= $value1; } $v->setValues($values); $v->saveValues(); $product->save(); 

hope this helps someone this value is only for special updates

+5
source share

I think this is also useful ...

If you are customizing products.

 <?php $magePath = 'app/Mage.php'; require_once $magePath; Varien_Profiler::enable(); Mage::setIsDeveloperMode(true); ini_set('display_errors', 1); umask(0); Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $product_ids = array(1,2,167); $productmodel = Mage::getModel('catalog/product'); foreach ($product_ids as $product_id) { /**i use this two arrays for collecte value because i uses inside setData of current option*/ $cos=array(); $co=array(); $product = $productmodel->load($product_id); $options = $product->getProductOptionsCollection(); if (isset($options)) { foreach ($options as $o) { $title = $o->getTitle(); /** this block is for changing information of specific option from collection options inside current product the save method for this option in end of code */ if ($title == "Line 1/Front") { $o->setProduct($product); $o->setTitle("Line 1/Ftont"); $o->setType("drop_down"); $o->setIsRequire(1); $o->setSortOrder(0); } /** this block for update or add information of specific value inside current option */ $optionType = $o->getType(); //test type if ($optionType == "drop_down") { //getting collection of value related to current option $values = $o->getValuesCollection(); $found = false; foreach ($values as $k => $v) { //test existing of value for update if (1 == preg_match("/said$/i", $v->getTitle())) { //update and save $v->setTitle("morad") ->setSku("kk") ->setPriceType("fixed") ->setSortOrder(0) ->setPrice(floatval(13.0000)); $v->setOption($o)->save(); /** this ligne is important i collecte all value required for normalize save function related to current option */ $cos[]=$v->toArray($co); } } /** create new value object you can use $option->getValueInstance() for working with getSingleton */ $value = Mage::getModel('catalog/product_option_value'); $value->setOption($o) ->setTitle('valueiwant') ->setSku("nn") ->setPriceType("fixed") ->setSortOrder(1) ->setPrice(12) /** this ligne is important (relation forigien key) for related this new value to specific option */ ->setOptionId($o->getId()); $value->save(); /** this ligne is important i collecte all value required for normalize save function related to current option */ $cos[]=$value->toArray($co); } $o->setData("values",$cos)->save(); //var_dump($cos); } } } 
+5
source share

Are you creating a module for this? If you do this, you must use the cron Magento system and call the user model method:

 <config> <!--...--> <crontab> <jobs> <company_test> <schedule> <cron_expr>0,15,30,45 * * * *</cron_expr> </schedule> <run> <model>test/testmodel::testMethod</model> </run> </company_module> </jobs> </crontab> </config> 

When this is done, you can update the option of a specific product using the Mage_Catalog_Model_Product_Option model. I don’t know how CSV is created, but the algorithm could be something like this:

 // foreach option /** @var $opt Mage_Catalog_Model_Product_Option */ $opt = Mage::getModel('catalog/product_option'); $opt->setProduct($product); $optionArray = array( 'is_delete' => 0, 'title' => 'Blabla', 'previous_group' => '', 'previous_type' => '', 'type' => 'field', //can be radio, drop_down, file, area... 'is_require' => 0, 'sort_order' => 42, 'values' => array() ); $opt->addOption($optionArray); $opt->saveOptions(); // end foreach 

Also check out this link: http://subesh.com.np/2009/12/adding-custom-options-product-magento/

+1
source share

All Articles