Debe comenzar creando su propio módulo en la aplicación/código/local. Crea por ejemplo los directorios Moak/Vip. Será la raíz de tu módulo.
Con el fin de Magento para saber que existe, crear un archivo llamado Moak_Vip.xml en etc/modules, con el siguiente contenido:
<?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>
Luego, en su directorio de módulos, necesita la siguiente estructura y archivos:
- etc/config.xml
- Modelo/Observer.php
El config.xml define su módulo y declara su detector de eventos para un evento dado (checkout_onepage_controller_success_action
se envía cuando se completa el proceso de finalización de una página, se envía sales_order_payment_pay
cuando se confirma el pago).
No necesita ninguna configuración de base de datos ya que no guardará ninguna entidad nueva. Así su archivo de configuración debería ser algo como lo siguiente:
<?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>
Ahora, su método de observador checkVipCustomer
debe recibir un objeto de evento a partir del cual se puede recuperar toda la información sobre el pedido, el cliente ... y realizar las modificaciones te gusta. Eche un vistazo a las clases de modelo de Magento en la aplicación/código/núcleo/Mage /.../ Modelo/... para ver cómo navegar a través de esos objetos.
Ejemplo:
<?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;
}
}
Nota no he probado ninguno de los códigos que escribí aquí, lo que debe manipularse con cuidado! Espero que haya sido de ayuda, Magento tiene una curva de aprendizaje difícil ... ¡Buena suerte!
Esto es excelente, amigo. Probablemente esté un poco desactualizado, pero dio una buena idea de cómo la implementación de Magento del patrón evento/observador. ¡Aclamaciones! –
"computeExpirationDate" en su config.xml probablemente debería ser "checkVipCustomer" –
Tiene razón @KaeVerens, edité la respuesta. – Julien