magento事件监听器

时间:2012-06-25 12:50:14

标签: events magento-1.5 observers discount coupon

我不想对已经打折的产品,即有特价的产品申请折扣优惠券。所以我创建了一个事件,听听:

<?xml version="1.0" ?>
<config>
<modules>
    <Tweett_Fashionn>
        <version>0.1.0</version>
    </Tweett_Fashionn>
</modules>
<global>
    <events>
        <salesrule_validator_process>
            <observers>
                <Tweett_Fashionn_Hook>
                    <type>singleton</type>
                    <class>Tweett_Fashionn_Model_Observer</class>
                    <method>specialpricediscount</method>
                </Tweett_Fashionn_Hook>
            </observers>
        </salesrule_validator_process>
    </events>
</global>

和观察者文件为

<?php
 class Tweett_Fashionn_Model_Observer extends Varien_Event_Observer{
public function __construct(){
    echo "<p style='color:red'>Hello World .. </p>";
}
public function specialpricediscount($observer){
    $item=$observer['item'];
    $_product = Mage::getSingleton('catalog/product')->load($item->getProductId());           
    if($_product->getSpecialPrice()>0 ){
        $result = $observer['result'];
        $result->setDiscountAmount(0);                
    } 
   }
   }
 ?>

但是,当我点击“应用优惠券”按钮时,它甚至不打印hello世界..plz help

2 个答案:

答案 0 :(得分:0)

你错过了config.xml的结尾?你可能没有粘贴它。 你确定你的模块已经启用了吗? 看看这个免费扩展,它可以帮助您调试扩展 - http://www.magentocommerce.com/magento-connect/magneto-debug-8676.html

答案 1 :(得分:0)

我有同样的问题。我认为以下是正确的方法:

 <salesrule_validator_process>
        <observers>
            <Namespace_Modulename> // your namespace_modulename
                <type>model</type> //change singleton to model
                <class>Tweett_Fashionn_Model_Observer</class>
                <method>specialpricediscount</method>
            </Namespace_Modulename>
        </observers>
    </salesrule_validator_process>

愿这对你有所帮助。