Benutzer nach dem Login umleiten


9

Ich wollte den Benutzer nach der Anmeldung auf die Seite "Startseite" anstatt auf die Seite "Mein Konto" umleiten, und es gelang mir, dies zu erreichen

<customer_login>

Veranstaltung.

Aber ich wurde auch zur Startseite weitergeleitet, während ich mich von einer Seite aus anmeldete, die ich nicht möchte.

Unten ist meine Beobachterfunktion

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

}

Kann jemand bitte eine Anleitung geben, wie ich verhindern kann, dass Benutzer es nach dem Anmelden von der Onepage-Kasse auf die Homepage umleiten?

Vielen Dank.

Antworten:


11

Danke Jungs.

Unten ist die Beobachterfunktion, die für mich funktioniert hat

 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('');
    }

Wo ist das ?
Pratik

Soll ich es in CSS platzieren? Welche Datei meinst du?
Pratik

7

Sie sollten zuerst Ihre Kundenkonfiguration ändern:

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie dann einen referrerParameter im Formular. Zum Beispiel

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

4

Versuche dies

<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getBaseUrl()); ?>

Wo soll ich das schreiben?
Pratik

3

Um alle Kommentare hier zusammenzufassen:

Nehmen Sie eine config.xml und registrieren Sie ein Ereignis für customer_login im Frontend-Bereich wie folgt

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

Danach müssen Sie diese Beobachtermethode implementieren, um die "after auth" -URL der Kundensitzung zu ändern. Diese Variable wird im AccountController des Kunden verwendet, um zu überprüfen, wohin nach der Anmeldung umgeleitet werden soll.

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('');
}

2

Sie können Mage::helper('core/http')->getHttpReferer()in dem Zustand verwenden, in dem Sie bereits sehen müssen, ob der Referer Ihre Checkout-Seite ist, und konsequent handeln.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.