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.

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

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">

4

coba ini

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

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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.