2009-07-29 20 views
5

Pensa a un sistema di affiliazione piccolo e di base. Voglio un URL del tipoRouter Magento: come posso rilevare i parametri in tutti gli URL?

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

Ogni volta afid si trova nella URL, un metodo dovrebbe essere chiamato (in pratica per salvare "AFID" nella sessione e quando il cliente acquista roba, voglio seguirlo).

Qualcuno qui che sa come farlo? Ogni suggerimento è accettato ;-)

risposta

20

Non è necessario un router per questo. Dovrai configurare un listener di eventi che si attiva per ogni caricamento di pagina e quindi accedere alle variabili nella raccolta di richieste. L'evento controller_front_init_routers dovrebbe fare.

Così configurazione del, configurare il modulo con il seguente

<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> 

e quindi creare la seguente classe

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 
    } 
} 

Il interceptMethod può essere chiamato quello che vuoi.

+1

Grazie! Quel modo ;-) – Max

1

So che questa è una risposta molto vecchia, ma è valido menzionare che non dovremmo usare l'evento controller_front_init_routers se intendiamo memorizzare tali parametri in sessione, che è lo scenario per la domanda originale. Ad esempio, se si crea un'istanza customer/session a questo punto, non sarà più possibile eseguire un accesso cliente. Alan lo ha indicato lui stesso in http://alanstorm.com/magento_sessions_early. A proposito, grazie Alan per questo fantastico articolo.