Redireccionar usuario después de iniciar sesión

9

Quería redirigir al usuario a la página "Inicio" en lugar de a la página "Mi cuenta" después de iniciar sesión, y tuve éxito al lograr esto haciendo uso de

<customer_login>

evento.

Pero también fui redirigido a la página de inicio mientras inicio sesión desde el pago de una página que no quiero.

A continuación se muestra mi función de observador

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

}

¿Alguien puede guiar cómo puedo evitar que el usuario lo redirija a la página de inicio después de iniciar sesión desde el pago de una página?

Gracias.

Solución de software Trimantra
fuente

Respuestas:

11

Gracias chicos.

a continuación está la función de observador que funcionó para mí

 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('');
    }
Solución de software Trimantra
fuente
Donde está esto ?
Pratik
¿Debo colocarlo en CSS? ¿A qué archivo te refieres?
Pratik
7

Primero debe cambiar la configuración de su cliente:

ingrese la descripción de la imagen aquí

Luego use un referrerparámetro en el formulario. Por ejemplo

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

prueba esto

<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getBaseUrl()); ?>
Deepak Mallah
fuente
¿Dónde escribir esto?
Pratik
3

Solo para resumir todos los comentarios aquí:

Tome un config.xml y registre un evento para customer_login en el área de la interfaz como esta

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

Después de eso, debe implementar ese método de observador para cambiar la URL "después de la autenticación" de la sesión del cliente. Esta variable se usará en el AccountController del cliente para verificar dónde redirigir después de iniciar sesión.

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

Puede usarlo Mage::helper('core/http')->getHttpReferer()en la condición en que ya tiene que ver si el árbitro es su página de pago y actuar en consecuencia.

mbalparda
fuente