ECCUBE 2.13.5系 * 会員登録の手間を減らす

昔の名残で、
未だに、スマホの迷惑メールを解除していない人が多く、
メールが届くか?、届かないか?
実際には、送ってみないと、わかりません。

ECCUBEにおいては、会員登録でメール承認式にしないかぎり、
注文メールが届いたか、どうか、判断がつきません。
(それでも、メアド間違いなど、不達の場合はある)

***

特に悲惨なのは、非会員の場合、
マイページも使えず、通知すら出来ない状況で、

「届いていない」という連絡を待つよりも、
「メールが届かなくても、マイページ見てね」という、方針にすべく、
これを回避する、唯一の方法は、

会員登録必須にしてしまうこと。

 

ただ、会員登録がページ切り替えが多く、手間が多いと感じるので、
なるだけページを省略する。

会員登録をすれば、マイページから、
メールの送信履歴も見れるわけで、
決済完了画面に、その説明を加えてやるだけで良い。

会員登録ページを削る、実際の作業


プログラム本体の、大掛かりな変更必要があるかと思っていたら、
ほとんど、テンプレートの修正だけで済む

(重要)会員登録のメール承認は、しないものとする。

これが、一番の手間・・・

必要なプラグイン

  • RegisterWhileShopping
    ※注文完了画面でも会員登録可、とあるが、
    実際には、完了1つ前の確認画面で、パスワードなどを入力する。
    (入力せずに、スルーも可)

いじるところ

  1. cart/index.tpl?->?mtb_constants.php
  2. shopping/nonmember.tpl
  3. plugin > RegisterWhileShopping/templates/*/plg_RegisterWhileShopping_shopping_confirm.tpl

たったこれだけw

***

?1. cart/index.tpl?-> cache/mtb_constants.php

/shopping/ に、移行するリンクを変更する。

160行目あたり。(ほぼ文末)

img/button/btn_buystep.jpg" alt="購入手続きへ" name="confirm" /-->
↓

  購入手続きへ

↑ 正常に、動きません!

※たまたま、登録出来ていた環境(セッション)で、テストしていたのですが、
別のPCでトライしたところ、カートに戻ってしまうことが、発覚。
直接/shopping/?mode=nonmemerに移行すると、
カート内の情報が登録できていないので、カートに戻ってきてしまうため、

やはり、cart.phpは通らなくてはならず、
通った後に、/shopping/?mode=nonmemer に飛ばすのが、正解。

.

代替え案として、実際に変更箇所したは、これだけ。
data/cache/mtb_constants.php

define('SHOPPING_URL', HTTPS_URL . "shopping/" . DIR_INDEX_PATH. '?mode=nonmember');

大幅なソースの変更が必要だと、思っていたところ、
パラメーターの変更だけで、済んでしまいます。

やってることは、/shopping/に渡すとき、

  • ログイン
  • 会員登録する
  • 登録せずに購入

を選ばせないように、
getで「mode = nonmember?」を渡して、入力を促します。
※LC_Page_Shopping.phpでは、
$_REQUEST[‘mode’]で処理されているので、postでなく、getでOK。

2.?shopping/nonmember.tpl

未登録ばかりじゃないので、登録済みの型用に、ログイン・フォームを移植
shopping/index.phpから、単に<form>~</form>をコピー。

貼り付けただけで、ここでログインしても、
支払い選択のページにちゃんと移動する。

ECCUBE nonmemberで会員登録省略

だいたいこんな感じで、
一応、会員登録が必要な旨と、会員規約をリンクで表示する。

※ダウンロード系なので、入力は最小になってます。

3. plg_RegisterWhileShopping_shopping_confirm.tpl

また、パスワードなどを入れない場合、
素通り出来るように設計してあるので、
パスワードを忘れた時のヒントの「選択してください」のOptionをコメントアウト。

<!--
選択してください  --->

これで、

パスと、ヒントの答えを入れないと、通れない仕組みになります。

***

下記をご記入いただくだけで、注文完了と同時に会員登録ができます。会員登録せずにご購入いただく場合は、下記に何も記入せずにお進みください。

は、
消すなり、上手な日本語に、置き換えて下さい。

課題

プラグインRegisterWhileShoppingが、登録済みメアドか判断してくれるのですが、
完了間際のページじゃなく、メアド入力するページに処理を入れたほうが親切ですね。
プラグイン内の

 $email_flg = SC_Helper_Customer_Ex::sfCheckRegisterUserFromEmail($arrForm['email']);

を、class_ex/shopping/LC_Page_Shopping_Ex.phpに、
移植し、エラー処理を加えて下さい。

PS.

今回は、コード丸写しが少なく、ごめんなさいネw

-

ECCUBE 2.13.5系 * smarty/templates とuserdata/packageの統合

3.0系のリリースから、1年以上?経過し、そろそろ移行すべきなんですが、
やっぱり、使い慣れた環境ででもあり、運用実績があるので、
今年は、移行できず、2.13.5で、頑張っているところですが、

Eccubeって、慣れれば、どうってことがないのですが、
とっつきにく、理由として、

どこにファイルがあるか、分からない

も、1つの理由だと、思うのですが、

もう1つ、

デザイン系のファイルが、

  • /data/smarty/templates/
  • /user_data/packages/

に、二分されているので、
修正時など、とっても、不便です。

そこで、考えました。

この2つtemplatesとpackagesを統合できないか?

***

統合先

  • smarty/templates > user_data/packages
  • user_data/packages >?smarty/templates

どっちに統一するのですが、

階層が浅い、user_dataに統合してみました。

※管理画面上での編集は、一切考慮しておりません!

***

変更箇所 >?/data/cache/mtb_constants.php

/** SMARTYテンプレート */
define('SMARTY_TEMPLATES_REALDIR', DATA_REALDIR . "Smarty/templates/");
↓
define('SMARTY_TEMPLATES_REALDIR', USER_TEMPLATE_REALDIR);

.

たった、これだけ。

 

あとは、smarty/templates > user_data/packagesに、
上書きするだけ。

user_data/templatesでもいいのですが、
切り替えが面倒なので、packagesに統合しました。

※必ず、テストした上で、自己責任で運用下さい!

 

-