Magento——利用购物车促销规则(Shopping Cart Price Rules)实现自己的功能第一章: 添加新的动作(Actions)

简介:

Magento的促销规则引擎,可以用一个词,叫很好很强大,不过虽然可以在Magento后台可以设置很复杂的各种条件(Conditions),但条件对应的动作(Actions)却很少,而且全部都是只针对价格做文章。如下图:


其实利用这个引擎可以开发自己的各种需求功能,一些收费的插件就是这么在做的,包括几个积分插件,都是用这个引擎来设置积分获取和使用的规则。今天讲下我在利用促销引擎上的一些体会,第一篇讲的是如何添加新的动作(Actions),这个是针对Shopping Cart Price Rules的。

在模块的config.xml添加事件监听,监听adminhtml_block_salesrule_actions_prepareform事件:

           <events>
          <!--按促销规则送优惠券 -->
            <adminhtml_block_salesrule_actions_prepareform>
                <observers>
                    <coupon_present_action>
            						<type>model</type>
            						<class>Shuishui_Coupon_Helper_Data</class>
            						<method>presentCoupon</method>
                    </coupon_present_action>
                </observers>
            </adminhtml_block_salesrule_actions_prepareform>

          </events>

在对应的Data.php文件里编写监听该事件的函数presentCoupon

    //按促销规则送优惠券
    public function  presentCoupon($observer){

       $form = $observer->getForm();
       $fieldset=$form->getElement('action_fieldset');
       $options = '';
       foreach ($fieldset->getElements() as $element) {
             if($element->getName() == 'simple_action'){
                $options = $element->getOptions();
             } 
            }
            //送优惠券
            $options['present_coupon'] = '送X张Y类型优惠券(优惠金额为Y)'; 
            
            $fieldset->removeField('simple_action');
            $fieldset->addField('simple_action', 'select', array(
            'label'     => Mage::helper('salesrule')->__('Apply'),
            'name'      => 'simple_action',
            'options'    => $options,
                ),'^'); 
   
    
    }

效果如下:


现在,你就可以像设置自带的促销规则那样,设置自己想要在符合某种条件时所想要的操作,我这里以符合

某种条件时送优惠券为例(该优惠券功能是另外开发的,不在本文的讨论范围大笑)。

比如,购物满500送一张优惠券等等。条件设置为

操作选择自己刚刚添加的那个,其他设置与一般的规则设置一致。

这样,第一步添加新的动作(Actions)就完成了,至于如何在购物车页面验证这条自己新增的规则,下一篇文章再讲

PS:以上的代码只是例子,每个人可以在规则引擎的基础上按需求开发出自己需求的功能。

目录
相关文章
|
JavaScript 前端开发
56dwr - 购物车案例(调用远程的 Cart 方法)
56dwr - 购物车案例(调用远程的 Cart 方法)
37 0
|
1月前
|
JavaScript
js学习--商品列表商品详情
js学习--商品列表商品详情
20 2
|
4月前
|
开发者
useEffect问题之ProductPage组件中的购买和结账按钮点击事件如何解决
useEffect问题之ProductPage组件中的购买和结账按钮点击事件如何解决
|
4月前
|
存储
支付系统36-------订单表优化,添加payment_type字段,无论是微信支付还是支付宝支付都放到 t_order_info表中了,payment_type用来判断支付宝还是微信支付的
支付系统36-------订单表优化,添加payment_type字段,无论是微信支付还是支付宝支付都放到 t_order_info表中了,payment_type用来判断支付宝还是微信支付的
|
4月前
|
前端开发
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
|
6月前
|
供应链 搜索推荐 数据挖掘
拼多多根据ID取商品详情原数据 API (pinduoduo.item_get_app_pro)在电商中的应用
拼多多是一个非常受欢迎的电商平台,它提供了许多API接口来帮助开发者集成和扩展其功能。其中,pinduoduo.item_get_app_pro API接口是用于根据商品ID获取商品详情的。这个API接口在电商应用中具有广泛的应用场景,以下是几个例子: 个性化推荐:电商平台可以根据用户的浏览和购买历史,利用pinduoduo.item_get_app_pro API接口获取商品的详细信息,然后向用户推荐相似或相关的商品。这有助于提高用户的购物体验,增加用户的购买意愿。 库存管理:商家可以利用这个API接口实时查询商品库存情况,以便及时调整销售策略,避免库存积压或缺货。 商品详情页面优化:在商
|
6月前
|
API
taobao.trade.memo.update( 修改交易备注 ) 丨淘宝店铺订单接口
taobao.trade.memo.update( 修改交易备注 ) 丨淘宝店铺订单接口
|
JavaScript 前端开发 API
Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
|
JSON 前端开发 JavaScript
angularjs购物车功能(全)包含 (修改,添加等功能)
angularjs购物车功能(全)包含 (修改,添加等功能)
42 0
ES6 —— 通过价格 / 名字查询商品(filter 和 some 的使用)
ES6 —— 通过价格 / 名字查询商品(filter 和 some 的使用)