忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/26 03:49 |
EC-CUBE ログインで画面移動しない
デフォルトのログインブロックは、ログインするとサイトトップに移動してしまいます。
ログインしても画面移動を行わず、単にログイン状態になるだけのほうが便利だと思うので変更してみます。

幸いなことにデフォルトのログインフォームにはログイン元のページを示すurlパラメータが最初からくっついているので、ログイン終了後にそこにリダイレクトさせれば解決しそうです。

ログイン先のURLは
http://eccube.localhost/login_check.php
呼ばれるファイルは、順に
/html/frontparts/login_check.php
/data/class_extends/page_extends/frontparts/LC_Page_FrontParts_LoginCheck_Ex.php
/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php
/data/class/pages/LC_Page.php
となっています。

具体的にログインに成功した場合の処理を行っているのはLC_Page_FrontParts_LoginCheck::process()の以下の部分です。

1
2
3
4
5
  if($objCustomer->getCustomerDataFromEmailPass(
    $arrForm['login_pass'], $arrForm['login_email'], true)) {
      $this->sendRedirect($this->getLocation(URL_DIR, array(), false));
      exit;
  }

でだ、EC-CUBEのデフォルト動作を修正する場合は/data/class/以下は触らずに、そこに対応する/data/class_extends/を触れ、ということになっています。
つまりLC_Page_FrontParts_LoginCheck::process()の動作を修正するかわりにLC_Page_FrontParts_LoginCheck_Ex::process()を修正すればよいのですが、LC_Page_FrontParts_LoginCheck::process()はひとつのメソッドに動作を全部詰め込んでいるせいで一部だけの修正というのができないんだこれが。
画面表示までやらせるなよ。いくらなんでも。
parent::process()が完全に死にメソッドじゃないか。
EC-CUBEはとにかく粒度が荒い。

LC_Page_FrontParts_LoginCheck_Ex::process()LC_Page_FrontParts_LoginCheck::process()を全部コピペし、上記の部分だけをこのように修正。

1
2
3
4
5
6
  if($objCustomer->getCustomerDataFromEmailPass(
    $arrForm['login_pass'], $arrForm['login_email'], true)) {
      $this->sendRedirect($this->getLocation(
        $_REQUEST['url'], array(), false));
      exit;
  }

あっさり完成しました。
が、結局全部まるごとコピペしなければならないというこの作りはいただけない。
今回はやってませんが、プログラムを作成する際は各機能毎にメソッドに分けるようにしましょう。
そうなっていれば、今回の場合もリダイレクトするメソッドだけをオーバーライドすれば済んでいたはずですし。

あと問題点として、POSTで移動した後のページからログインするとPOSTで渡したパラメータが無くなるのでエラーになったりおかしくなったりします。
メソッドを見て処理を分岐するなり、ログインブロックでPOSTパラメータを全部常時一緒に送るようにしたりといったことが必要になります。
面倒なのでやめたほうがよかったかもしれない。


EC-CUBEの記事
PR


2010/03/05 21:37 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<買ったものリスト 2010/03/07 | HOME | ==NOVEL PHILOSOMA== 04>>
忍者ブログ[PR]