Reindirizzare l'utente dopo l'accesso


9

Volevo reindirizzare l'utente alla pagina "Home" anziché alla pagina "Il mio account" dopo il login e sono riuscito a ottenere questo risultato utilizzando

<customer_login>

evento.

Ma sono stato anche reindirizzato alla home page mentre accedo dal checkout su una pagina che non desidero.

Di seguito è la mia funzione di osservatore

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

}

Qualcuno può guidare come posso impedire all'utente di reindirizzarlo alla homepage dopo il login dal checkout su pagina?

Grazie.

Risposte:


11

Grazie ragazzi.

di seguito è la funzione di osservatore che ha funzionato per me

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

Dov'è questo ?
Pratik,

Devo inserirlo in CSS? Quale file intendi?
Pratik,

7

È necessario innanzitutto modificare la configurazione del cliente:

inserisci qui la descrizione dell'immagine

Quindi utilizzare un referrerparametro nel modulo. Per esempio

<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

prova questo

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

Dove scrivere questo?
Pratik,

3

Solo per riassumere tutti i commenti qui:

Prendi un file config.xml e registra un evento per customer_login nell'area del frontend in questo modo

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

Successivamente è necessario implementare quel metodo di osservazione per modificare l'URL "after auth" della sessione del cliente. Questa variabile verrà utilizzata nell'AccountController del cliente per verificare dove reindirizzare dopo l'accesso.

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

Puoi utilizzare Mage::helper('core/http')->getHttpReferer()nella condizione in cui devi già vedere se il referer è la tua pagina di checkout e agire di conseguenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.