로그인 후 사용자 리디렉션


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

이것은 어디에 있습니까?
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">

4

이 시도

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

이것을 어디에 쓸 것인가?
Pratik

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()이미 추천자가 체크 아웃 페이지인지 확인하고 그에 따라 행동해야하는 조건에서 사용할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.