想象一个小而基本的联盟系统。我想要一个像这样的URL:
www.myshop.com/mynewproduct.html?afid=123
每当 URL 中出现
afid
,应该调用一个方法(主要是将“afid”保存在会话中,并在客户购买物品时进行跟踪)。想象一个小而基本的联盟系统。我想要一个像这样的URL:
www.myshop.com/mynewproduct.html?afid=123
afid
,应该调用一个方法(主要是将“afid”保存在会话中,并在客户购买物品时进行跟踪)。<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中指出了这一点。顺便说一下,感谢Alan撰写这篇伟大的文章。