Magento路由器:如何在所有URL中捕获参数?

Max*_*Max 5 session router magento affiliate shop

想想一个小而基本的联盟系统.我想要一个像URL的URL

www.myshop.com/mynewproduct.html?afid=123
Run Code Online (Sandbox Code Playgroud)

每次afid都在URL中找到,应该调用一个方法(基本上是为了在会话中保存"afid",当客户购买东西时,我想跟踪它).

在座的人谁知道怎么做?每个提示都被接受;-)

Ala*_*orm 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>
Run Code Online (Sandbox Code Playgroud)

然后创建以下类

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
    }
}
Run Code Online (Sandbox Code Playgroud)

interceptMethod可命名为任何你想要的.