ログアウト後に顧客をmagentoのデフォルトのストアビューにリダイレクトするにはどうすればよいですか?ログアウト時に、別のストアビューにリダイレクトします。
3 に答える
エレガントではないことはわかっていますが、私が見つけた最も簡単な方法は、テンプレートファイルapp/design/frontend/base/default/template/customer/logout.phtml
を自分のテーマディレクトリにコピーして変更することです。
具体的にはこの行:
<p><?php echo Mage::helper('customer')->__('You have logged out and will be redirected to our homepage in 5 seconds.') ?></p>
<script type="text/javascript">
//<![CDATA[
setTimeout(function(){ location.href = '<?php echo $this->getUrl() ?>'},5000);
//]]>
</script>
location.hrefのURLとタイムアウトを変更することで、ログアウト直後の任意の場所をユーザーに示すことができます。例えば:
<script type="text/javascript">
//<![CDATA[
setTimeout(function(){ location.href = '<?php echo $this->getUrl('*/*/login') ?>'},500);
//]]>
</script>
繰り返しになりますが、これはエレガントではありませんが、ページのクイックホップによって別のURLに移動し、上記の例ではログイン画面に戻るのに十分な速さのリダイレクトである必要があります。
残念ながら、ログアウトリダイレクトの場所を操作するための便利なイベントフックはありません。
Mage_Customer_AccountController::logoutAction()
イベントがディスパッチされた後、::logoutSuccessAction()
応答オブジェクトにリダイレクトを設定します。これは、PHPを使用してecho javascript paramを設定し、OOBの可能性なしにホームページにリダイレクトするcustomer/logout.phtmlテンプレートのレンダリングです。代替JSベースのリダイレクト。customer_logout
controller_action_postdispatch_customer_account_logout
最もクリーンな解決策は、監視し、コントローラーオブジェクトを取得し、応答オブジェクトのsetRedirectWithCookieCheck()
メソッドを使用してロケーションヘッダーを上書きすることだと思います。
public function logoutRedirect($obs)
{
$obs->getControllerAction()
->setRedirectWithCookieCheck(/* your URL param(s) */);
}
モデル>オブザーバーに次のメソッドを記述します。
public function customerLoggedOut(Varien_Event_Observer $observer)
{
$observer->getControllerAction()
->setRedirectWithCookieCheck(CustomUrl);
}
Customurlは、ログアウト後にリダイレクトするURLです。
ログイン、ログアウト、登録後にeコマースWebサイトのカスタムURLリダイレクトの完全なソリューションが必要な場合。カスタムリダイレクト拡張機能が役立ちます。リンクをクリックして拡張子を取得します。http://www.magentocommerce.com/magento-connect/custom-redirection.html