open how php mysql magento magento-1.7 product

how - magento php



¿Cómo actualizar opciones personalizadas programáticamente en magento? (3)

¿Creas un módulo para hacer eso? Si lo hace, debe usar el sistema cron de Magento y llamar a un método de un modelo personalizado:

<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>

Una vez hecho esto, puede actualizar la opción de un producto específico utilizando el modelo Mage_Catalog_Model_Product_Option . No sé cómo se crea el CSV, pero el algoritmo puede ser algo así:

// 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

También consulte este enlace: http://subesh.com.np/2009/12/adding-custom-options-product-magento/

Tengo muchos productos con opciones personalizadas, ahora tengo el requisito de actualizar solo las opciones personalizadas a través del archivo csv. Entonces, ¿cómo podemos hacer esto programáticamente?


Creo que esto también es útil ...

Si está personalizando los productos.

<?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); } } }


encontré una solución para actualizar las opciones personalizadas programáticamente esta es la solución

$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();

Espero que esto ayude a alguien solo actualice el valor de las opciones personalizadas