ログイン後にユーザーをリダイレクト


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、2015年

CSSに配置する必要がありますか?あなたはどのファイルを意味しますか?
Pratik、2015年

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を変更する必要があります。この変数は、ログイン後にリダイレクトする場所を確認するために、顧客の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.