利用magento的购物车促销规则引擎(Shopping Cart Price Rules)添加自己的促销规则

magento有个自带的促销规则引擎,这个促销规则真的是非常强大,虽然可以在Magento后台可以设置很复杂的各种条件(Conditions),但条件对应的动作(Actions)却很少,而且全部都是只针对价格来做文章,入下图:

利用magento的购物车促销规则引擎(Shopping Cart Price Rules)添加自己的促销规则_第1张图片
其实利用这个引擎可以开发自己的各种需求功能,下面就是我在这上面的一个应用:
首先该form下会触发如下的事件:
该form文件路径: Mage_Adminhtml_Block_Promo_Quote_Edit_Tab_Action.php(感兴趣的可以看下里面具体是怎么写的),定义的事件为:

Mage::dispatchEvent('adminhtml_block_salesrule_actions_prepareform', array('form' => $form));

,因此我就来监听该事件,在模块的config.xml中添加事件监听,监听adminhtml_block_salesrule_actions_prepareform事件:


    
        
            
                fun_promo/observer
                buyXPricingY
            
        
    

在对应的promo下的observer.php中编写监听该事件的函数buyXPricingY:

const BUY_X_PRICING_Y = 'buyXPricingY';

public function buyXPricingY($observer)
{
    $field = $observer->getForm()->getElement('simple_action');

    $options = $field->getValues();

    $options[] = array(
        'value' => self::BUY_X_PRICING_Y,
        'label' => 'N元购买Y件'
    );

    $field->setValues($options);
}

这里第一句是取form中的’simple_action’元素的field;
第二句是去该field下的值;
第三句是添加自己想要加入的新的选项;
第四句是将值再次set到field中;

这里的’simple_action’元素在magento原文件中是下面这样的:

$fieldset->addField('simple_action', 'select', array(
    'label'     => Mage::helper('salesrule')->__('Apply'),
    'name'      => 'simple_action',
    'options'    => array(
        Mage_SalesRule_Model_Rule::BY_PERCENT_ACTION => Mage::helper('salesrule')->__('Percent of product price discount'),
        Mage_SalesRule_Model_Rule::BY_FIXED_ACTION => Mage::helper('salesrule')->__('Fixed amount discount'),
        Mage_SalesRule_Model_Rule::CART_FIXED_ACTION => Mage::helper('salesrule')->__('Fixed amount discount for whole cart'),
        Mage_SalesRule_Model_Rule::BUY_X_GET_Y_ACTION => Mage::helper('salesrule')->__('Buy X get Y free (discount amount is Y)'),
    ),
));

至此新加入的促销规则添加成功,效果如下:
利用magento的购物车促销规则引擎(Shopping Cart Price Rules)添加自己的促销规则_第2张图片

我就可以给我新加的促销规则设置规则了:
利用magento的购物车促销规则引擎(Shopping Cart Price Rules)添加自己的促销规则_第3张图片
利用magento的购物车促销规则引擎(Shopping Cart Price Rules)添加自己的促销规则_第4张图片

图一的意思当用户选择分类Id为61下的分类商品大于等于5件时享受该N元买Y件的促销规则;
图二是选定规则,规则N元的金额,规则Y件指定的件数;

你可能感兴趣的:(Magento杂谈)