2

Magento で新しい顧客アカウント確認テンプレートを編集しようとしました。しかし、フロントエンドには反映されません。

customer_account_confirmationテーマ レイアウト フォルダーの customer.xml ファイルのレイアウトを編集しました。

customer_account_confirmationcustomer.xml で編集 しました

<customer_account_confirmation>
        <remove name="right"/>
        <remove name="left"/>

        <reference name="root">
            <action method="setTemplate"><template>page/account_confirm.phtml</template></action>
            <action method="setHeaderTitle" translate="title" module="customer"><title>Send confirmation link</title></action>
        </reference>
    </customer_account_confirmation>

メールから確認リンクをクリックしようとすると、ダッシュボード ページにリダイレクトされ、確認メッセージが表示されます。しかし、顧客がメールから確認リンクをクリックした後、ありがとうページを表示する必要があります

テンプレートフォルダのaccount_confirm.phtmlファイルにサンキューページを設定したいのですが、うまくいきません。

この問題を解決するための適切な解決策を教えてもらえますか?

ありがとう

4

1 に答える 1

2

問題は次のとおりです: 顧客が新しいアカウントの確認リンクをクリックしたときに呼び出されるリダイレクト URL を変更するにはどうすればよいですか?

この場合、デフォルトのリダイレクト (「ダッシュボード」へのリダイレクト) を担当するコントローラーを確認します。のような確認リンクに記載されている URL を調べると、簡単に見つけることができますhttp://www.yourdomain.com/customer/account/confirm/[some params]。ここからコントローラーを取得します。Customer モジュールのconfirmAction()メソッドを探しています。AccountController.phpこのメソッドの最後に、リダイレクトが定義されます。

public function confirmAction()  {
    (...)

            // log in and send greeting email, then die happy
            $this->_getSession()->setCustomerAsLoggedIn($customer);
            $successUrl = $this->_welcomeCustomer($customer, true);
            $this->_redirectSuccess($backUrl ? $backUrl : $successUrl);
            return;

    (...)
}

そのため、確認が成功すると、ユーザーは で指定された URL にリダイレクトされるか、指定されて$backUrlいない場合は で指定された URL にリダイレクトされます$successUrl

確認リンク URL にパラメーターが含まれている場合、最初の変数$backUrlはこのメソッド内で定義されます。confirmAction()back_url

$backUrl = $this->getRequest()->getParam('back_url', false);

2 番目の変数は のメソッド$succesUrlによって返され、を指す URL が設定され、顧客のダッシュボードが読み込まれます。_welcomeCustomer()AccountControllerindexAction()

したがって、デフォルトの Magento リダイレクトを変更するには、確認リンクがパラメーターを使用して作成されていることを確認しback_urlます (たとえば、私の場合、このパラメーターは空です)。または、カスタムモジュールでオーバーライドしてAccountController、必要に応じてリダイレクトします。

于 2013-05-22T22:15:46.570 に答える