问候,在Magento我想触发一个事件,一旦订单被设置为处理(通过网关确认或手动),例如:如果一般客户(id 1)花费超过100美元并且付款已经确认后,将他的团体ID设置为4(银色VIP,按促销规则全球获得2%折扣) 我会给予赏金,但我想在2天之前得到答案O_o
编辑:到目前为止我收到的答案只是部分答案,我发现链接非常混乱,我不清楚什么是最小设置,我需要配置什么创建等...此外,我正在尝试找出如何获得付费客户ID /模型。
答案 0 :(得分: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定义您的模块并为给定事件声明您的事件监听器(当一个页面结帐过程完成时发送checkout_onepage_controller_success_action
,在确认付款后发送sales_order_payment_pay
。) / p>
您不需要任何数据库设置,因为您不会保存任何新实体。 因此,您的配置文件应如下所示:
<?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有一个艰难的学习曲线...... 祝你好运!
答案 1 :(得分:1)
您可以为“sales_order_payment_pay”事件创建一个观察者。以下是magento 1.3中事件的cheatsheet。
以及如何创建observer methods的说明。链接由优秀的activecodeline和inchoo网站提供。