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

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

Thank you for reading this post, don't forget to subscribe!

 

 

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

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

<events>  
lt;!--按促销规则送优惠券 -->  
 <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>  
  
lt;/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:以上的代码只是例子,每个人可以在规则引擎的基础上按需求开发出自己需求的功能。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注