5

小規模で基本的なアフィリエイト システムを考えてみましょう。みたいなURLが欲しい

www.myshop.com/mynewproduct.html?afid=123

URL で が見つかるたびafidに、メソッドを呼び出す必要があります (基本的に、セッションに「afid」を保存し、顧客が商品を購入したときにそれを追跡したい)。

それを行う方法を知っている人がここにいますか?すべてのヒントが受け入れられます;-)

4

2 に答える 2

20

このためにルーターは必要ありません。ページが読み込まれるたびに起動するイベントリスナーを設定してから、リクエストコレクションの変数にアクセスする必要があります。controller_front_init_routersイベントが実行する必要があります。

したがって、モジュールの構成を次のように設定します

<global>
    <events>
        <controller_front_init_routers>
            <observers>
                <packagename_modulename_observer>
                    <type>singleton</type>
                    <class>Packagename_Modulename_Model_Observer</class>
                    <method>interceptMethod</method>
                </packagename_modulename_observer>
            </observers>
        </controller_front_init_routers>    
    </events>
</global>

そして、次のクラスを作成します

app/code/local/Packagename/Modulename/Model/Observer.php
class Packagename_Modulename_Model_Observer {
    public function interceptMethod($observer) {
        $request    = $observer->getEvent()->getData('front')->getRequest();
        $afid       = $request->afid;

        //do whatever you want with your variable here
    }
}

interceptMethod好きな名前を付けることができます。

于 2009-07-29T15:47:55.697 に答える
1

これは非常に古い答えであることは知っていますが、controller_front_init_routersこれらのパラメーターをセッションに保存する場合は、イベントを使用しないでください。これは元の質問のシナリオです。たとえば、customer/sessionこの時点でインスタンス化すると、顧客ログインを実行できなくなります。Alan はhttp://alanstorm.com/magento_sessions_earlyでこれを指摘しました。ところで、この素晴らしい記事をありがとうアラン。

于 2015-09-29T11:46:03.247 に答える