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

Sponsored Link

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}--> // 小計

関連記事

福岡のウェブデザイン事務所「ハブワークス」

HP作成・リニューアルは福岡のハブワークスまでお気軽にお問い合わせください。ウェブサイト公開後の修正・更新もお任せください。フリーランスだからできるリーズナブルな料金設定でサービスをご提供いたします。