最近在 Magento 项目中有这样一种需求,在下订单时,修改该商品的 Custom Option。现列出一下解决方案:
测试时使用的 Magento 版本是 1.7.0.2。
动态修改商品的 Custom Option
$_product = $this->getProduct();
$i = 1;
foreach ($_product->getOptions() as $o) {
echo "[b]Custom Option:" . $i . "[/b]<br/>";
echo "Custom Option TYPE: " . $o->getType() . "<br/>";
echo "Custom Option TITLE: " . $o->getTitle() . "<br/>";
echo "Custom Option Values: <br/>";
// Getting Values if it has option values, case of select,dropdown,radio,multiselect
$values = $o->getValues();
foreach ($values as $v) {
//print_r($v->getData());
echo $v["title"] . " Sort Order: " . $v["sort_order"] . "<br/>";
$rand = rand(0, 100);
$v["sort_order"] = $rand;
$v->setOption($o)->save();
/* Or else, you can set multiple option value simultaneously.
$v->setTitle("morad")
->setSku("kk")
->setPriceType("fixed")
->setSortOrder(0)
->setPrice(floatval(13.0000));
$v->setOption($o)->save();
*/
}
$i++;
}
动态添加商品的 Custom Option
function setCustomOption($productId,
$title,
array $optionData,
array $values = array()) {
Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);
if (!$product = Mage::getModel('catalog/product')->load($productId)) {
throw new Exception('Can not find product: ' . $productId);
}
$defaultData = array(
'type' => 'field',
'is_require' => 0,
'price' => 0,
'price_type' => 'fixed',
);
$data = array_merge($defaultData,
$optionData,
array('product_id' => (int)$productId,
'title' => $title,
'values' => $values));
$product->setHasOptions(1)->save();
$option = Mage::getModel('catalog/product_option')->setData($data)
->setProduct($product)->save();
return $option;
}
使用示例:
$options = array('type' => 'radio',
'is_require' => 1,
'price' => 0,
'price_type' => 'fixed');
$values = array(
array(
'title' => '2kg',
'price' => 10,
'price_type' => 'fixed',
'sku' => 'w1',
'sort_order' => 1
),
array(
'title' => '4kg',
'price' => 20,
'price_type' => 'fixed',
'sku' => 'w2',
'sort_order' => 2
),
array(
'title' => '10kg',
'price' => 40,
'price_type' => 'fixed',
'sku' => 'w3',
'sort_order' => 3
)
);
setCustomOption(166, 'Weight', $options, $values);
FYI:
分享到:
相关推荐
magento程序添加多个表运费,可以自行设置运费计算公式
magento custom menu 可以自己定制的导航菜单
这个文件用于magento 批量上传产品后,... 也可用于批量上传商品的尺码或属性。注意: media_img.csv和 attrib.csv这两个文件只能放在tool目录里面。这个工具测试了magento 1.7x 以上的版本,1.7x以下的版本未测试。
magento2添加51track物流功能 1:后台添加51track密钥 2:对接51track物流接口 3:实现添加物流单号自动提交到51track
magento 积分插件 magento 积分插件 magento 积分插件
深入理解Magento-第九章 – 修改、扩展、重写Magento代码 深入理解Magento-第十章 – 数据操作&数据收集器 在Magento教程中用到的模块 Configviewer Layoutviewer Helloworld with Custom System Config 其他...
magento数据结构分析 magento数据字典
magento产品名称及描述批量修改sql
NULL 博文链接:https://hudeyong926.iteye.com/blog/1608792
Get a hands-on introduction to custom shipping and payment methods ☆ 出版信息:☆ [作者信息] Branko Ajzele [出版机构] Packt Publishing [出版日期] 2013年09月25日 [图书页数] 128页 [图书语言] 英语...
magik shoes magento 模板, magento 1.7 模板
magento的SMTP插件magento的SMTP插件magento的SMTP插件
从入门开始讲解magento的框架结构,然后教你开发一个简单的hello world模块接着是讲解magento中的mvc和zend的区别,最后讲到了magneto的高级资源模型.
NULL 博文链接:https://justcoding.iteye.com/blog/2100394
深入理解Magento 由精东博客下载下来制作成pdf
订单号的自由修改$lastArg ="lvx";
个物理上存在的文件,而是 Magento 根据当前的系统状态动态生成的一段 XML 。 大多数的 PHP 开发者并不习惯于这样抽象层,因为它增加的编程的复杂性。但是 这样的抽象提供了无与伦比的灵活性,允许你覆盖几乎任何...
Magento插件开发手册 Magento Extension Developers Guide
Athlete Magento主题,兼容Magento 1.9.x, 1.8.x, 1.7.x ,特点:完全自适应(响应式布局),自定义子主题,无限颜色,完全自定义,一键安装演示,小工具化横幅系统,颜色选择,MEGA菜单,多商店支持,自定义产品...
Magento Magento商城 Magento目录结构