Перенаправлення користувача після входу


9

Я хотів переспрямувати користувача на сторінку "Головна" замість сторінки "Мій обліковий запис" після входу, і мені вдалося досягти цього, використовуючи

<customer_login>

подія.

Але мене також переадресували на домашню сторінку, коли я входив з однієї сторінки, яку я не хочу.

Нижче - моя функція спостереження

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

}

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

Дякую тобі.

Відповіді:


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

Де це ?
Пратік

Чи слід розміщувати його в 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">


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-адресу "after auth" сеансу з клієнтом. Ця змінна буде використана в 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()умовою, яку ви вже маєте побачити, чи є реферер на вашій сторінці оформлення замовлення, і діяти відповідно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.