Redirecionar usuário após o login


9

Eu queria redirecionar o usuário para a página "Página inicial" em vez da página "Minha conta" após o login, e consegui fazer isso usando

<customer_login>

evento.

Mas eu também fui redirecionado para a página inicial enquanto eu faço o login no checkout de uma página que não quero.

Abaixo está a minha função de observador

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

}

Qualquer um pode orientar como impedir que o usuário o redirecione para a página inicial após o login no checkout de uma página?

Obrigado.

Respostas:


11

Obrigado pessoal.

abaixo está a função de observador que funcionou para mim

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

Onde é isso ?
Pratik

Devo colocá-lo em CSS? Qual arquivo você quer dizer?
Pratik

7

Você deve primeiro alterar a configuração do cliente:

insira a descrição da imagem aqui

Em seguida, use um referrerparâmetro no formulário. Por exemplo

<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

tente isso

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

Onde escrever isso?
Pratik

3

Apenas para resumir todos os comentários aqui:

Pegue um config.xml e registre um evento para customer_login na área de front-end como esta

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

Depois disso, você precisa implementar esse método de observação para alterar o URL "after auth" da sessão do cliente. Essa variável será usada no AccountController do cliente para verificar para onde redirecionar após o login.

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

Você pode usar Mage::helper('core/http')->getHttpReferer()na condição em que você já tem que ver se o referenciador é a sua página de checkout e agir em conseqüência.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.