Przekieruj użytkownika po zalogowaniu

9

Chciałem przekierować użytkownika na stronę główną zamiast strony „Moje konto” po zalogowaniu i udało mi się to osiągnąć dzięki

<customer_login>

zdarzenie.

Ale przekierowano mnie również na stronę główną, gdy loguję się z kasy na stronie, której nie chcę.

Poniżej znajduje się moja funkcja obserwatora

public function setRedirectOnLogin(){
    $session = Mage::getSingleton('customer/session');
    if (strpos($session->getBeforeAuthUrl(), 'checkout') === false)
        $session->setAfterAuthUrl(Mage::getBaseUrl());
    $session->setBeforeAuthUrl('');

}

Czy ktoś może wskazać, w jaki sposób mogę powstrzymać użytkownika przed przekierowaniem na stronę główną po zalogowaniu z kasy?

Dziękuję Ci.

Oprogramowanie Trimantra
źródło

Odpowiedzi:

11

Dzięki chłopaki.

poniżej jest funkcja obserwatora, która działała dla mnie

 public function setRedirectOnLogin(){
        $session = Mage::getSingleton('customer/session');
        if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false)
            $session->setAfterAuthUrl(Mage::getBaseUrl());  
        else             
            $session->setAfterAuthUrl(Mage::helper('core/http')->getHttpReferer());

        $session->setBeforeAuthUrl('');
    }
Oprogramowanie Trimantra
źródło
Gdzie to jest ?
Pratik
Czy powinienem umieścić go w CSS? Który plik masz na myśli?
Pratik
7

Najpierw należy zmienić konfigurację klienta:

wprowadź opis zdjęcia tutaj

Następnie użyj referrerparam na formularzu. Na przykład

<form action="<?php
    echo $this->getUrl(
        'customer/account/loginPost',
        array(
            'referer' =>
            // Encode the base url, or whatever URL we want to go to
            Mage::helper('core')->urlEncode(Mage::getBaseUrl())
        )
    ) ?>" method="post">
Steve Robbins
źródło
4

Spróbuj tego

<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getBaseUrl()); ?>
Deepak Mallah
źródło
Gdzie to napisać?
Pratik
3

Podsumowując wszystkie komentarze tutaj:

Weź config.xml i zarejestruj zdarzenie dla user_login w obszarze frontonu w ten sposób

<frontend>
    <events>
        <customer_login>
            <observers>
                <your_module>
                    <class>your_module/observer</class>
                    <method>customerLogin</method>
                </your_module>
            </observers>
        </customer_login>
    </events>
</frontend>

Następnie musisz zaimplementować tę metodę obserwatora, aby zmienić adres URL „po autoryzacji” sesji klienta. Ta zmienna zostanie wykorzystana w AccountController klienta, aby sprawdzić, gdzie przekierować po zalogowaniu.

public function customerLogin($observer)
{
    $session = Mage::getSingleton('customer/session');
    if (strpos(Mage::helper('core/http')->getHttpReferer(), 'checkout') === false) {
        $session->setAfterAuthUrl(Mage::getBaseUrl());
    } else {
        $session->setAfterAuthUrl(Mage::helper('core/http')->getHttpReferer());
    }

    $session->setBeforeAuthUrl('');
}
Matthias Kleine
źródło
2

Możesz użyć, Mage::helper('core/http')->getHttpReferer()pod warunkiem, że już musisz sprawdzić, czy osoba polecająca jest Twoją stroną do kasy, i konsekwentnie działaj.

mbalparda
źródło