EC-CUBE2系でお客様情報の入力項目を追加するカスタマイズ
EC-CUBE2.13で商品の購入時に項目を追加する方法です。
EC-CUBEの購入フローは以下の様なプロセスです。
商品ページ
↓
カート
↓
お客様情報入力
↓
お届け先指定
↓
支払い方法指定・お届け先時間指定
↓
確認画面
↓
購入
このお客様情報入力の段階で新規項目を追加する方法です。
その他、お支払い方法指定・お届け先時間指定の項目で新規項目を追加する方法は以下の記事を参考にしてください。
[EC-CUBE2.13]ご注文の流れフォームに任意の入力項目を追加する
目次(読みたい所をクリック!!)
EC-CUBEお客様情報の入力項目を追加
お客様情報入力の追加は新規会員登録時と同じテンプレートファイルが使用されます。
したがってまずは新規会員登録画面の修正をする必要があります。
その方法については以下をご覧ください。
http://www.s-oj.com/ec-business/ec-cube-membership-distributor/
上記の方法で新規会員登録時の項目を追加できれば、自動で商品購入時のお客様登録画面で新たに追加した項目の入力フォームが追加されます。
ただこれだけだと、商品購入の確認画面で新規追加した項目が反映されていないのでそこをカスタマイズいく方法が以下になります。
商品購入時は購入情報が「dtb_order_temp」というデータベースに一時的に書き込まれます。
そしてこの「dtb_order_temp」を確認画面で読み込んで購入ボタンを押すことで商品注文完了となります。
注文完了すると「dtb_order_temp」のデータが「dtb_order」に書き込まれます。
これはEC-CUBE管理画面の受注管理情報を見る際にも呼び出される注文情報を管理しているデータベースです。
したがって商品購入時に新規項目を追加するには「dtb_order」と「dtb_order_temp」のデータベースに追加したい項目のカラムを追加する必要があります。
また、受注管理情報画面で追加した項目を確認できるようにテンプレートファイルを修正します。
修正するファイルは
data/Smarty/templates/admin/order/edit.tpl
です。
追加できたら次は確認画面でそれを呼び出しましょう。
商品購入の確認画面のテンプレートはdata/Smarty/templates/default/shopping/confirm.tpl
です。
pagesファイルを修正し項目を追加する
次にdata/class/pages/admin/orderLC_Page_Admin_Order_Edit.phpを修正します。
343行目辺りにお客様情報を追加する箇所があるので必要な項目を追加してください。
これは新規会員登録時に行ったパラメーターの追加と同じ方法です。
これで会員登録をしていない時、商品購入の確認ページで新規追加した項目が追加されているはずです。
会員登録済みユーザーへの修正
ここまでの修正だけでは会員登録済みのユーザーが商品を購入した際に新規追加した項目が確認画面に反映されていません。
会員登録済みのユーザーの会員情報を一度データベースから読み込んでdtb_order_tempに登録を行なう必要があります。
その処理を行っているのは
data/class/page/shopping/LC_Page_Shopping_Payment.php
です。
このファイルの364行目辺りの「lfRegistData」でデータベースへの登録を行っています。
同ファイル内actionメソッドで会員データを読み込み、そのデータを引数としてlfRegistDataを呼び出し、一時データベースへの登録を行っています。
以上で完了です。