2009-07-29 11 views
5

Pomyśl o małym i podstawowym systemie afiliacyjnym. Żądam URL jakMagento router: Jak mogę przechwytywać parametry we wszystkich adresach URL?

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

Za każdym razem afid znajduje się w adresie URL, metoda powinna być wywoływana (w zasadzie, aby zapisać „AFID” w sesji, a gdy klient kupuje rzeczy, chcę go śledzić).

Ktoś tutaj kto wie, jak to zrobić? Każda podpowiedź jest akceptowana ;-)

Odpowiedz

20

Nie potrzebujesz do tego routera. Będziesz chciał skonfigurować detektor zdarzeń uruchamiany przy każdym ładowaniu strony, a następnie uzyskać dostęp do zmiennych w zbiorze żądań. Zdarzenie controller_front_init_routers powinno zrobić.

Więc config, konfiguracji modułu za pomocą następującego

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

a następnie utworzyć następujące klasy

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 można nazwać co chcesz.

+1

Dzięki! Że droga ;-) – Max

1

Wiem, że jest to bardzo stara odpowiedź, ale warto wspomnieć, że nie powinniśmy używać zdarzenia controller_front_init_routers, jeśli zamierzamy przechowywać te parametry w sesji, co jest scenariuszem pierwotnego pytania. Na przykład, jeśli utworzysz w tym momencie customer/session, nie będziesz już mógł logować się do klienta. Alan wskazał to osobiście w http://alanstorm.com/magento_sessions_early. Przy okazji, dziękuję Alanowi za ten świetny artykuł.

Powiązane problemy