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:以上的代码只是例子,每个人可以在规则引擎的基础上按需求开发出自己需求的功能。

目录
相关文章
|
9月前
|
存储 人工智能 API
七种RAG架构cheat sheet!
RAG 即检索增强生成,是一种结合检索技术和生成模型的人工智能方法。Weaviate厂商给出了七种RAG架构cheat sheet。
570 18
|
关系型数据库 MySQL 应用服务中间件
LNMP详解(四)——LNMP原理与简单部署
LNMP详解(四)——LNMP原理与简单部署
385 2
crash —— 查看内核配置
crash —— 查看内核配置
|
SQL 数据采集 关系型数据库
|
JSON 网络协议 Java
cpolar内网穿透将本地服务端接口模拟公共网络环境远程调用调试
cpolar内网穿透将本地服务端接口模拟公共网络环境远程调用调试
483 0
|
监控 前端开发 数据挖掘
微店商品详情数据接口:接入淘宝代购系统的连接桥梁,展示前端页面
微店API让开发者获取商品详尽信息,如名称、价格等。作为淘宝代购系统的桥梁,它支持数据同步、商品及订单管理。通过多平台API,实现实时商品数据抓取,提供一致购物流程。此外,还能进行价格比较、库存监控,提升用户交互体验,并辅助数据分析以优化采购策略。开发者需按规范对接API,并参考官方文档获取最新信息。
|
JavaScript 开发者
在Vue中引入Message,弹窗提示错误信息
这篇文章讲述了在Vue CLI项目中如何处理异常,通过引入Message组件实现弹窗提示错误信息,帮助开发者排查和解决webpack等问题。
|
Prometheus 监控 数据可视化
面试分享:Airflow工作流调度系统架构与使用指南
【4月更文挑战第10天】Apache Airflow是关键的工作流调度系统,本文结合面试经验,深入探讨其核心架构和使用技巧。重点包括:1) Airflow的Scheduler、Web Server、Worker和Metadata Database组件;2) DAG、Task和Operator的概念;3) DAG编写、调度及错误处理策略;4) 监控与扩展性,如自定义Operator和最佳实践。通过学习,助你在面试中应对Airflow相关问题,并提升实际工作中的数据工程能力。
881 5
|
XML 缓存 搜索推荐
RSS 解析:全球内容分发的利器及使用技巧
RSS(Really Simple Syndication)是一种 XML 格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS 文档结构包括 `&lt;channel&gt;` 和 `&lt;item&gt;` 元素,允许内容创作者分享标题、链接和描述。通过 RSS,用户可以定制新闻源,过滤不相关信息,提高效率。RSS 支持不同版本,如 RSS 0.91 和 RSS 2.0,其中 RSS 2.0 语法简单且广泛使用。RSS 提高网站流量,适用于新闻、博客、日历等频繁更新的站点。RSS 的历史始于 1997 年,至今仍无官方标准,但已成为内容共享的重要工具。
930 0
|
开发框架 前端开发 搜索推荐
分享97个框架模板PHP源码,总有一款适合你
分享97个框架模板PHP源码,总有一款适合你
285 2