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
上一篇:
asp.net頁麵刷新後樣式發生改變
下一篇:
CSDN精選Android開發博客
《數據結構與抽象:Java語言描述(原書第4版)》一P.4 選擇類
決戰雙11之巔 阿裏安全治理黑灰產之技術圖譜曝光
"0x00a1bdb3" 指令引用的 "0x00000001" 內存。該內存不能為 "read"。
Android開發13——內容提供者ContentProvider的基本使用
w3c係列CSS之路(五):詳解visual formatting model
《JVM故障診斷指南》之2 —— 調整合適的Java堆大小的技巧
Java線程範圍變量——ThreadLocal的模擬和解釋
Oracle 查詢表中各列名稱、表中列數
第九章 關係映射 一對一關係 共享主鍵方式實現一對一
Oracle Partition 分區詳細總結