Arahkan pengguna setelah login

9

Saya ingin mengarahkan pengguna ke halaman "Beranda" alih-alih halaman "Akun Saya" setelah login, dan saya berhasil mencapai ini dengan memanfaatkan

<customer_login>

peristiwa.

Tetapi saya juga dialihkan ke beranda sementara saya masuk dari checkout di tempat yang tidak saya inginkan.

Di bawah ini adalah fungsi pengamat saya

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

}

Bisakah ada yang memandu bagaimana saya bisa menghentikan pengguna mengalihkannya ke beranda setelah login dari checkout di tempat?

Terima kasih.

Solusi Perangkat Lunak Trimantra
sumber

Jawaban:

11

Terima kasih kawan.

di bawah ini adalah fungsi pengamat yang bekerja untuk saya

 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('');
    }
Solusi Perangkat Lunak Trimantra
sumber
Dimana ini ?
Pratik
Haruskah saya letakkan di CSS? File mana yang kamu maksud?
Pratik
7

Anda harus terlebih dahulu mengubah konfigurasi pelanggan Anda:

masukkan deskripsi gambar di sini

Kemudian gunakan referrerparam pada formulir. Contohnya

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

coba ini

<?php Mage::getSingleton('customer/session')->setBeforeAuthUrl($this->getBaseUrl()); ?>
Deepak Mallah
sumber
Di mana menulis ini?
Pratik
3

Untuk meringkas semua komentar di sini:

Ambil config.xml dan daftarkan acara untuk customer_login di area frontend seperti ini

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

Setelah itu Anda harus menerapkan metode pengamat untuk mengubah url "setelah auth" dari sesi pelanggan. Variabel ini akan digunakan dalam AccountController pelanggan untuk memeriksa di mana harus mengarahkan setelah 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('');
}
Matthias Kleine
sumber
2

Anda dapat menggunakan Mage::helper('core/http')->getHttpReferer()dalam kondisi Anda sudah harus melihat apakah perujuk adalah halaman checkout Anda dan bertindak sebagai konsekuensinya.

mbalparda
sumber