6

问候,在 Magento 中,我想触发一个事件,一旦订单被设置为处理(通过网关确认或手动),例如:如果普通客户(id 1)花费超过 100 美元并且付款已经确认,设置他的组 id 为 4(银 VIP,根据促销规则在全球范围内获得 2% 的折扣)

编辑:到目前为止我收到的答案只是部分答案,我也发现链接非常混乱,我不清楚什么是最小设置,我必须配置什么创建等等......我也在尝试了解如何获取付费客户 ID/型号。

4

2 回答 2

31

您应该首先在 app/code/local 中创建自己的模块。例如,创建目录 Moak/Vip。它将成为您模块的根目录。

为了让 Magento 知道它的存在,在 etc/modules 中创建一个名为 Moak_Vip.xml 的文件,其内容如下:

<?xml version="1.0"?>
<config>
    <modules>
        <Moak_Vip>
            <active>true</active>
            <codePool>local</codePool>
            <self_name>Moak VIP module</self_name>
        </Moak_Vip >
    </modules>
</config>

然后,在您的模块目录中,您需要以下结构和文件:

  • 等/config.xml
  • 模型/观察者.php

config.xml 定义您的模块并声明给定事件的事件侦听器(checkout_onepage_controller_success_action在单页结帐过程完成时sales_order_payment_pay发送,在确认付款时发送)。

您不需要任何数据库设置,因为您不会保存任何新实体。因此,您的配置文件应如下所示:

<?xml version="1.0"?>
<config>
    <modules>
        <Moak_Vip>
            <version>0.1.0</version>
        </Moak_Vip>
    </modules>
    <global>
        <models>
            <moak>
                <class>Moak_Vip_Model</class>
            </moak>
        </models>      
        <events>
            <sales_order_payment_pay>
                <observers>
                    <moak_observer>
                        <type>singleton</type>
                        <class>moak/observer</class>
                        <method>checkVipCustomer</method>
                    </moak_observer>
                </observers>
            </sales_order_payment_pay >     
        </events>
     </global>
</config>

现在,您的 Observer 方法checkVipCustomer应该接收一个事件对象,您可以从中检索有关订单、客户的所有信息……并执行您喜欢的修改。查看 app/code/core/Mage/.../Model/... 中的 Magento 模型类,了解如何浏览这些对象。

例子 :

<?php

class Moak_Vip_Model_Observer
{
    public function checkVipCustomer($event)
    {
        $order = $event->getInvoice()->getOrder(); // Mage_Sales_Model_Order
        /*
            - Check order amount
            - Get customer object
            - Set Group id
            - $customer->save();
        */
        return $this;
    }

}

注意我没有测试我在这里写的任何代码,所以要小心处理!希望它有所帮助,Magento 的学习曲线很艰难......祝你好运!

于 2009-09-22T16:24:29.207 回答
1

您可以为“sales_order_payment_pay”事件创建观察者。这是magento 1.3 中事件的备忘单。

以及如何创建观察者方法的解释。链接由优秀的 activecodeline 和 inchoo 网站提供。

于 2009-09-02T07:30:44.760 回答