เปลี่ยนเส้นทางผู้ใช้หลังจากเข้าสู่ระบบ


9

ฉันต้องการเปลี่ยนเส้นทางผู้ใช้ไปที่หน้า "หน้าแรก" แทนที่จะเป็นหน้า "บัญชีของฉัน" หลังจากเข้าสู่ระบบและฉันประสบความสำเร็จในการทำให้การใช้งานนี้ประสบผลสำเร็จ

<customer_login>

เหตุการณ์

แต่ฉันก็ถูกเปลี่ยนเส้นทางไปยังหน้าแรกในขณะที่ฉันเข้าสู่ระบบจากการชำระเงิน onepage ซึ่งฉันไม่ต้องการ

ด้านล่างเป็นฟังก์ชั่นผู้สังเกตการณ์ของฉัน

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

}

ใครช่วยได้โปรดแนะนำฉันจะหยุดผู้ใช้จากการเปลี่ยนเส้นทางไปยังหน้าแรกหลังจากเข้าสู่ระบบจากการชำระเงิน onepage?

ขอบคุณ.

คำตอบ:


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

ที่นี่ที่ไหน ?
Pratik

ฉันควรวางไว้ใน CSS หรือไม่ ไฟล์ใดที่คุณหมายถึง
Pratik

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()ในเงื่อนไขที่คุณมีอยู่แล้วเพื่อดูว่าผู้อ้างอิงเป็นหน้าเช็คเอาต์ของคุณและดำเนินการตามลำดับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.