EC-CUBEのカスタマイズにどっぷり丸一日ハマってしまいました。くたびれた。
カスタマイズするのに、注文完了画面から注文情報の一部をpostで渡さないといけなかったので、そこの処理を備忘録として簡単にまとめます。
注文完了画面では注文情報は削除されている
data/class/pages/shopping/LC_Page_Shopping_Complete.php を確認すると、次のように$_SESSION[‘order_id’]はunsetされています。丁寧に理由がコメントされていますね。
public function process() { parent::process(); $this->action(); $this->sendResponse(); // プラグインなどで order_id を取得する場合があるため, ここで unset する unset($_SESSION['order_id']); }
このままでは注文情報を抜き出せないので、注文完了画面に注文情報を渡せるようにカスタマイズします。
LC_Page_Shopping_Complete_Ex.php にカスタマイズ内容記述します。
LC_Page_Shopping_Complete.php を直接編集してもいいのですが、EC-CUBEにはカスタマイズ用に拡張クラスが用意されているので、
data/class_extends/page_extends/shopping/LC_Page_Shopping_Complete_Ex.php にカスタマイズ内容記述します。
process()でunsetされる前に、次のように記述して、complete.tplに注文情報を渡します。
function action() { $this->arrInfo = SC_Helper_DB_Ex::sfGetBasisData(); // 注文情報を取得 $objPurchase = new SC_Helper_Purchase(); $this->arrOrder = $objPurchase->getOrder($_SESSION['order_id']); }
complete.tplでデータを取得する
data/Smarty/templates/default/shopping/complete.tpl に次のように記述してデータを取得できればokです。
<!--{$arrOrder.order_id}--> // 注文ID <!--{$arrOrder.order_email}--> // メールアドレス <!--{$arrOrder.order_tel01}--><!--{$arrOrder.order_tel02}--><!--{$arrOrder.order_tel03}--> // 電話番号 <!--{$arrOrder.subtotal}--> // 小計