閱讀326 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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:以上的代碼隻是例子,每個人可以在規則引擎的基礎上按需求開發出自己需求的功能。

最後更新:2017-04-02 22:16:01

  上一篇:go asp.net頁麵刷新後樣式發生改變
  下一篇:go CSDN精選Android開發博客