ECcubeのマイページの購入履歴一覧に『対応状況』を表示させる

ECcubeのマイページの購入履歴一覧のデフォルトは


購入日時

注文番号

お支払い方法

合計金額

詳細


である。しかしユーザが知りたいのは、現在の対応状況だろう。それが分かるようにする方法は


1)購入履歴一覧プログラムを拡張側に差し替え

class/pages/mypage/LC_Page_Mypage.php

のprocess関数の中身全部を


/class_extends/page_extends/mypage/LC_Page_Mypage_Ex.php


にコピー。


2)/class_extends/page_extends/mypage/LC_Page_Mypage_Ex.php編集

//ページ送り用

if (isset($_POST['pageno'])) {

$this->tpl_pageno = htmlspecialchars($_POST['pageno'], ENT_QUOTES, CHAR_CODE);

}


というような部分の後くらいに

$masterData = new SC_DB_MasterData_Ex();

$this->arrORDERSTATUS = $masterData->getMasterData("mtb_order_status");


を追加。




さらにその後にある
$col = "order_id, create_date, payment_id, payment_total";
をコメントアウトし、
$col = "order_id, create_date, payment_id, payment_total, status";
に変更。




3)テンプレート修正

Smarty/templates/****/mypage/index.tpl

で表示させたい場所に


<!--{foreach from=$arrORDERSTATUS key=key item=item}-->

<!--{if $arrOrder[cnt].status == $key }-->

<!--{$item}-->

<!--{/if}-->

<!--{/foreach}-->


というようなものを書いてあげればよい。


例)

<table summary="購入履歴">

<tr>

<th>購入日時</th>

<th>注文番号</th>

<th>お支払い方法</th>

<th>合計金額</th>

<th>詳細</th>

<th>ご対応状況</th>

</tr>

<!--{section name=cnt loop=$arrOrder}-->

<tr>

<td><!--{$arrOrder[cnt].create_date|sfDispDBDate}--></td>

<td><!--{$arrOrder[cnt].order_id}--></td>

<!--{assign var=payment_id value="`$arrOrder[cnt].payment_id`"}-->

<td><!--{$arrPayment[$payment_id]|escape}--></td>

<td><!--{$arrOrder[cnt].payment_total|number_format}-->円</td>

<td><a href="<!--{$smarty.server.PHP_SELF|escape}-->" onclick="fnChangeAction('./history.php'); fnKeySubmit('order_id','<!--{$arrOrder[cnt].order_id}-->'); return false">詳細</a></td>

<td>

<!--{foreach from=$arrORDERSTATUS key=key item=item}-->

<!--{if $arrOrder[cnt].status == $key }-->

<!--{$item}-->

<!--{/if}-->

<!--{/foreach}-->

</td>

</tr>

<!--{/section}-->

</table>





コメント / トラックバック3件

  1. hiro より:

    2.4.3バージョンのカスタマイズで、「対応状況」機能が欲しく試みたのですが、対応状況欄が空白になってしまいます。
    管理者管理側では正常に「対応状況」が表示されております。
    LC_Page_Mypage_Ex.phpのfunction process()内にデフォルトで記載されているparent::process();を削除しLC_Page_Mypage.phpのfunction process()の中身を全てコピーし、追記の2行は問題なく行っております。
    index.tplも変更済みなのですが、表示されず行き詰っております。
    どうかアドバイスのほどよろしくお願いいたします。

  2. admin より:

    hiroさん

    原因分かりました-!
    ご報告有り難うございます。

    うっかりもう一つ忘れておりまして、
    追加の2行のすぐ後に
    $col = “order_id, create_date, payment_id, payment_total”;

    というのがありますが、
    ここを修正して
    $col = “order_id, create_date, payment_id, payment_total, status”;

    にする必要がありました。

    これにより、DBからstatusを引っ張ってきて表示出来る。という段取りです。

    誰もこのページというかこのサイトなんか見てないと思ってましたが、
    見ていてくれたのですね。有り難い限りです。

  3. hiro より:

    早速の返信ありがとうございます。
    無事表示されました!!
    本当に助かりました!!!

    とても分かりやすいプログラマサイトさんだからかなり参考にされてる方多いと思いますよ♪

    今後ともよろしくお願いします。

コメントをどうぞ