Перенаправить пользователя после входа в систему

9

Я хотел перенаправить пользователя на страницу «Домашняя страница» вместо страницы «Моя учетная запись» после входа в систему, и мне удалось добиться этого с помощью

<customer_login>

событие.

Но я также был перенаправлен на домашнюю страницу, когда я захожу с одностраничной проверки, что я не хочу.

Ниже моя функция наблюдателя

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

}

Может ли кто-нибудь порекомендовать, как я могу помешать пользователю перенаправить его на домашнюю страницу после входа из одностраничного оформления заказа?

Благодарю вас.

Trimantra Software Solution
источник

Ответы:

11

Спасибо вам, ребята.

ниже функция наблюдателя, которая работала для меня

 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('');
    }
Trimantra Software Solution
источник
Где это ?
Пратик
Должен ли я поместить его в CSS? Какой файл ты имеешь в виду?
Пратик
7

Сначала вы должны изменить конфигурацию вашего клиента:

введите описание изображения здесь

Затем используйте referrerпараметр в форме. Например

<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

попробуй это

<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getBaseUrl()); ?>
Дипак Малла
источник
Где это написать?
Пратик
3

Просто суммировать все комментарии здесь:

Возьмите config.xml и зарегистрируйте событие для customer_login в области веб-интерфейса, как это

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

После этого вам нужно реализовать этот метод наблюдателя, чтобы изменить URL-адрес «после авторизации» сеанса клиента. Эта переменная будет использоваться в AccountController клиента, чтобы проверить, куда перенаправить после входа в систему.

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

Вы можете использовать Mage::helper('core/http')->getHttpReferer()условие, которое вам уже нужно, чтобы увидеть, является ли реферер вашей страницей оформления заказа, и действовать соответственно.

mbalparda
источник