Należy rozpocząć od utworzenia własnego modułu w aplikacji/code/local. Utwórz na przykład katalogi Moak/Vip. To będzie podstawa twojego modułu.
Aby Magento wiedzieć, że istnieje, utwórz plik o nazwie Moak_Vip.xml w etc/modules, o następującej treści:
<?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>
Następnie w katalogu modułu, trzeba następującą strukturę i pliki:
- etc/config.xml
- modelu/Observer.php
Plik config.xml definiuje moduł i deklaruje odbiornik zdarzeń dla danego zdarzenia (checkout_onepage_controller_success_action
jest wysyłany, gdy proces pobierania strony zakończy się, sales_order_payment_pay
zostanie wysłany po potwierdzeniu płatności).
Nie potrzebujesz żadnego ustawienia bazy danych, ponieważ nie będziesz zapisywać żadnych nowych obiektów. więc plik konfiguracyjny powinien wyglądać mniej więcej tak:
<?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>
Teraz metoda Observer checkVipCustomer
powinien otrzymać obiekt zdarzenia, z których można pobrać wszystkie informacje dotyczące zlecenia, klienta ... i wykonać modyfikacje lubisz. Zobacz klasy modeli Magento w aplikacji/code/core/Mage /.../ Model/... , aby zobaczyć, jak poruszać się po tych obiektach.
Przykład:
<?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;
}
}
Uwaga Nie Przetestowałem dowolnego kodu pisałem tutaj, aby poradzić się ostrożnie! Mam nadzieję, że pomógł, Magento ma trudną ścieżkę uczenia się ... Powodzenia!
To jest doskonałe, kolego. Jest to prawdopodobnie nieco nieaktualne, ale dało dobre pojęcie o tym, w jaki sposób Magento implementuje wzorzec wydarzenia/obserwatora. Twoje zdrowie! –
"computeExpirationDate" w pliku config.xml powinno prawdopodobnie być "checkVipCustomer" –
Masz rację. @KaeVerens, zredagowałem odpowiedź. – Julien