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']);
}
このままでは注文情報を抜き出せないので、注文完了画面に注文情報を渡せるようにカスタマイズします。
[adsense]
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}--> // 小計


