Örneğin dizin Moak/Vip. Modülün kökü olacak.
<?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>
Ardından, modül dizininde, aşağıdaki yapıya ihtiyaç ve: sipariş Magento aşağıdaki içeriğe sahip, vs/modüller Moak_Vip.xml adlı bir dosya oluşturmak, bu var bilmek için ise
dosyalar:
- etc/config.xml
- Modeli/Observer.php
config.xml, modülünüzü tanımlar ve belirli bir etkinlik için olay dinleyicinizi bildirir (, sızıntı denetimi tamamlandığında gönderilir, ödeme onaylandığında sales_order_payment_pay
gönderilir).
Yeni bir varlık kaydetmeyeceğiniz için herhangi bir DB kurulumuna ihtiyacınız yoktur. Yani yapılandırma dosyası aşağıdaki gibi görünmelidir:
Şimdi
<?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>
, senin Gözlemci yöntemi checkVipCustomer
sırayla, müşteri hakkında tüm bilgileri alabilir hangi bir olay nesnesi alması gereken ... ve değişiklikler yapmak Beğendin. Bu nesneler arasında nasıl gezineceğinizi görmek için uygulama/kod/çekirdek/Mage /.../ Model/... 'daki Magento model sınıflarına bakın.
Örnek:
<?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;
}
}
Not Buraya yazdım kodun herhangi bir test, bu nedenle dikkatle işlemez ettik! Umut etmesine yardımcı oldu, Magento zor bir öğrenme eğrisine sahip ... İyi şanslar!
Bu mükemmel, dostum. Muhtemelen biraz güncel değil, ancak Magento'nun olay/gözlemci modelini nasıl uyguladığı hakkında iyi bir fikir verdi. Şerefe! –
config.xml dosyasındaki "computeExpirationDate" muhtemelen "checkVipCustomer" olmalıdır –
Haklısınız @KaeVerens, cevabı düzenledim. – Julien