`
yhz61010
  • 浏览: 562821 次
  • 来自: -
博客专栏
63c13ecc-ef01-31cf-984e-de461c7dfde8
libgdx 游戏开发
浏览量:12275
社区版块
存档分类
最新评论

[原创] Magento 动态添加或修改商品的 Custom Option

阅读更多
  最近在 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:
0
0
分享到:
评论
1 楼 vb2005xu 2012-11-10  
1.6.1 以上 soap api中已经提供了对 自定义属性进行修改的api 我一般都是单独的 api调用来做这些事情 这样基本可以不去改里面的流程

相关推荐

    wp_custom_menu-1.2.5.rar_magento_magento custom menu

    4. **自定义链接**:除了连接到内部产品和类别,还可以添加外部链接到其他网站或社交媒体平台。 5. **响应式设计**:确保菜单在各种设备上(如桌面、平板、手机)都能良好地展示和操作。 6. **主题兼容**:与Magento...

    magento添加多表运费

    "magento添加多表运费"这个主题主要涉及如何在Magento系统中实现复杂的运费计算规则,允许商家根据不同的商品重量、数量或地区设置不同的运费价格。 首先,我们要理解Magento的运费计算模型。默认情况下,Magento...

    Magento: 后台添加预览按钮 View product in frontend from Magento admin

    这篇博客“Magento:后台添加预览按钮 View product in frontend from Magento admin”主要探讨了如何通过自定义开发来实现这一功能,让管理员能够快速检查商品在网站前台的显示状态。 在Magento中,通常管理员需要...

    magento2添加51track物流功能

    magento2添加51track物流功能 1:后台添加51track密钥 2:对接51track物流接口 3:实现添加物流单号自动提交到51track

    Magento 添加后台管理

    在Magento中添加后台管理功能是开发者经常遇到的任务,这涉及到对系统后端界面的扩展和定制,以便更好地管理和控制商店的各项功能。以下是对“Magento添加后台管理”这一主题的详细讲解。 1. **理解Magento架构** ...

    Magento 添加后台管理 addColumn

    "Magento添加后台管理addColumn"这个主题主要涉及的是如何在Magento的后台管理面板自定义添加新的数据列,以展示更多店铺运营的相关信息。这通常涉及到对Magento的MVC(Model-View-Controller)架构的理解,以及对...

    magento创建动态菜单 Create Dynamic CMS Navigation For Magento Frontend

    Magento是一款强大的开源电子商务平台,它的灵活性和可扩展性使得开发者能够根据需求定制各种功能,包括创建动态CMS(内容管理系统)导航。在这个主题中,“Create Dynamic CMS Navigation For Magento Frontend”指...

    Magento 自定义后台menu Insert dynamical menu in Magento’s Admin

    如果你需要动态生成菜单,可以利用Magento的事件观察者机制,在特定的事件(如`adminhtml_menu_prepare_data`)上添加或修改菜单结构。 通过这样的方式,你可以根据业务需求自由地扩展Magento的后台菜单,提供更...

    magento 批量上传商品多图片, magento 批量上传商品尺码或属性(1.7x,1.8x,1.9x,2x)

    这个文件用于magento 批量上传产品后,... 也可用于批量上传商品的尺码或属性。注意: media_img.csv和 attrib.csv这两个文件只能放在tool目录里面。这个工具测试了magento 1.7x 以上的版本,1.7x以下的版本未测试。

    magento订单号的修改

    例如,添加特定的前缀、设定初始值或调整增量等。在提供的代码片段中,我们看到了一种自定义订单号生成方式的实现。 ### 自定义代码解析 在代码中,`Mage_Eav_Model_Entity_Increment_Numeric`类被扩展,用于重新...

    magento中文用户指南

    - 包括商品的添加、编辑、批量修改等功能。 - **商品类型** - Magento支持多种类型的商品,如简单商品、配置商品等。 - **新建商品** - 详细介绍创建新商品的步骤。 - **大量更改商品** - 使用批量操作来修改多...

    magento模块组件或插件开发教程

    本教程将引导你逐步深入Magento的模块组件或插件开发,让你从基础到高级,全面掌握Magento的开发技巧。 首先,我们从“magento的框架结构”开始。Magento采用的是MVC(Model-View-Controller)架构,这种设计模式在...

    magento二次开发大全

    2. **EAV模型**:Entity-Attribute-Value(EAV)模型是Magento数据存储的关键特性,允许存储具有动态属性的商品信息。`EAV(E-V图 product为例).png`和`EAV模型.png`可能展示了如何通过EAV结构存储和检索商品数据。 ...

    magento数据结构分析

    标题:“Magento数据结构分析” 描述:“Magento数据字典”提供了对Magento系统中各种数据库表的深入理解,这对于理解和优化Magento的性能至关重要。 一、Magento数据结构解析 Magento是一款功能强大的电子商务...

    magento产品名称及描述批量修改sql

    5. **验证更改**:批量修改后,通过Magento后台或者前端检查产品页面,确认产品名称和描述已成功更新。 在实际应用中,你可能还需要根据具体需求添加过滤条件,比如按类别、品牌或SKU范围进行修改。这可以通过在...

    magento入门学习资料

    例如,设置多个店面视图以支持多语言或多品牌运营,或调整SEO设置以优化商品在搜索引擎中的排名。 2. **Magento模板制作教程** Magento的模板系统允许开发者和设计师自由定制店铺的外观。学习如何创建和修改主题,...

    magento批量上传多图、添加自定义属性1.4、1.5+

    批量添加自定义属性插件则进一步优化了这一过程,允许商家通过CSV文件批量设置或更新商品的属性值,无需逐一编辑每个商品页面。 在使用"批量导入多图模块magento1.5+"和"批量导入多图模块magento1.4"时,需要注意...

    magento 积分插件

    1. **积分系统设计**:Magento积分插件允许商家自定义积分规则,如购买金额与积分的比例、特定商品或类别获取额外积分等。这有助于商家灵活地制定营销策略,以吸引和保留客户。 2. **积分获取途径**:除了购物,...

    magento 中文开发手册

    8. **代码修改、扩展和重写**:教你如何不改变核心代码的情况下扩展或替换 Magento 功能。 9. **数据操作和数据收集器**:涉及数据的保存、检索和处理过程。 10. **其他开发相关文章**:包括 EAV 数据查询、缓存清理...

Global site tag (gtag.js) - Google Analytics