6

ご挨拶、Magento で、注文が (ゲートウェイの確認または手動で) 処理するように設定されたら、イベントをトリガーしたいと思います。彼のグループ ID を 4 にします (シルバー VIP、プロモーション ルールにより、世界的に 2% の割引が適用されます) これに報奨金を与えますが、2 日以内に回答をお願いします O_o

編集:これまでに受け取った回答は部分的な回答にすぎません。また、リンクが非常に混乱していると思います。最小限のセットアップとは何か、作成などを構成する必要があるものは明確ではありません...また、私は試しています有料の顧客 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>

次に、モジュール ディレクトリに、次の構造とファイルが必要です。

  • etc/config.xml
  • モデル/オブザーバー.php

config.xml はモジュールを定義し、特定のイベントのイベント リスナーを宣言します ( 1 ページのcheckout_onepage_controller_success_actionチェックアウト プロセスが完了しsales_order_payment_payたときに送信され、支払いが確認されたときに送信されます)。

新しいエンティティを保存しないため、DB セットアップは必要ありません。したがって、構成ファイルは次のようになります。

<?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 に答える