【EC-CUBE2.13】注文完了画面で注文情報を取得する方法

2015年10月21日
follow us in feedly

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}--> // 小計
follow us in feedly

関連記事

福岡でホームページ制作を依頼するなら【ハブワークス】

ホームページ制作・リニューアル・スマートフォンサイト制作・ECサイト制作は福岡のハブワークスまでお気軽にどうぞ。WEBサイト制作後の修正・更新・SEO対策もお任せください。リーズナブルな料金設定でサービスをご提供いたします。

webサイト制作・修正に関するお問合せ・ご相談・お見積りはお気軽にどうぞ