小規模で基本的なアフィリエイト システムを考えてみましょう。みたいなURLが欲しい
www.myshop.com/mynewproduct.html?afid=123
URL で が見つかるたびafid
に、メソッドを呼び出す必要があります (基本的に、セッションに「afid」を保存し、顧客が商品を購入したときにそれを追跡したい)。
それを行う方法を知っている人がここにいますか?すべてのヒントが受け入れられます;-)
このためにルーターは必要ありません。ページが読み込まれるたびに起動するイベントリスナーを設定してから、リクエストコレクションの変数にアクセスする必要があります。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
好きな名前を付けることができます。
これは非常に古い答えであることは知っていますが、controller_front_init_routers
これらのパラメーターをセッションに保存する場合は、イベントを使用しないでください。これは元の質問のシナリオです。たとえば、customer/session
この時点でインスタンス化すると、顧客ログインを実行できなくなります。Alan はhttp://alanstorm.com/magento_sessions_earlyでこれを指摘しました。ところで、この素晴らしい記事をありがとうアラン。