実験酒場

ec-cube のし、包装オプション機能の追加
2009年 9月 02日(水曜日) 07:56
作者: Administrator
印刷 Eメール

ec-cubeの決済画面で、のしの表書きの選択や、包装の選択項目を追加するカスタム。

1.phpmyadminで、テーブルmtb_jobと同様のテーブル、mtb_optionを作成。

phpmyadminの下段にテーブルを新規作成とありますので、新規作成をクリック。テーブルの内容もmtb_jobと一緒。同じような内容ができたら、保存。でphpmyadminを閉じる。

phpmyadmin

インストール方法や使い方はググッてみたら、教えてくれる人がいます。

データベースがPostgreSQLの方はphpPgAdminで同上の方法です。

2.ec-cube管理画面でギフト、のしの項目を設定

管理画面⇒システム設定⇒マスタデータ管理で作ったテーブルが表示されると思います。

  • ID:0 指定なし
  • ID:1 簡易包装
  • ID:2 完全包装
  • ID:3 無地のし
  • ID:4 お祝い
  • ・・・・・・・

という感じで項目を作成。

3.phpmyadminのdtd_orderとdtd_order_tempにadd_optionというフィールドを追加

再びphpmyadminにログインして、dtd_orderとdtd_order_tempのテーブルにadd_optionというフィールドを追加。僕は最後尾に追加しました。

  • 型:smallint
  • NOTNULL
  • デフォルト:0

とします。

4./data/class/pages/shopping/LC_Page_Shopping_Payment.phpを編集

59行目辺りの$this->allowClientCache();の以下に2行を追加


//以下の二文を追加
$masterData = new SC_DB_MasterData_Ex();
$this->arrOPTION = $masterData->getMasterData("mtb_option");

338行目の$this->objFormParam->addParam("配達日", "deliv_date", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"));の以下に一文を追加する。


//以下の一文を追加
$this->objFormParam->addParam("オプション", "add_option", INT_LEN, "n", array("NUM_CHECK"));

上記のようにオプションの一文を追加。

5./data/class/pages/shopping/LC_Page_Shopping_Confirm.phpを編集

LC_Page_Shopping_Confirm.phpの55行目$this->arrReminder = $masterData->getMasterData("mtb_reminder");の以下に一文追加。


//以下の一文を追加
$this->arrOPTION = $masterData->getMasterData("mtb_option");

562行目辺りのソースの塊の中で赤字の, add_optionを追加


//一時受注テーブルからの情報を格納する
function lfSetOrderTempData($uniqid) {
$objQuery = new SC_Query();
$col = "payment_id, use_point, deliv_time_id, message, point_check, deliv_date, add_option";
$from = "dtb_order_temp";
$where = "order_temp_id = ?";
$arrRet = $objQuery->select($col, $from, $where, array($uniqid));
// DB値の取得

6./data/class/pages/admin/order/LC_Page_Admin_Order_Edit.phpを編集

86行目付近の $this->arrORDERSTATUS = $masterData->getMasterData("mtb_order_status");の以下に一文を追加。


//以下の一文を追加
$this->arrOPTION = $masterData->getMasterData("mtb_option");

7./data/Smarty/templates/default/shopping/payment.tplを編集

payment.tplの時間指定の以下に下記ソースを追加


<div class="payarea02">
<h3>オプションの指定</h3>
<p>ご希望の方は、オプションを選択してください。</p>
<div>
<!--★オプション指定★-->
<!--{assign var=key value="add_option"}-->
<span class="attention">
<!--{$arrErr[$key]}-->
</span> <em>オプション指定:</em>
<select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
<!--<option value="" selected="">指定なし</option>-->//コメントアウト
<!--{html_options options=$arrOPTION selected=$arrForm[$key].value}-->
</select>
</div>
</div>

8./data/Smarty/templates/default/shopping/confirm.tplを編集

ご注文確認ページの注文内容のテーブルのお好みの場所に以下のソースを追加。(<!--{if $tpl_login~の中に入れないようにだけ気をつける。)


<tr>
<th>オプション</th>
<td><!--{$arrOPTION[$arrData.add_option]|escape}--></td>
</tr>

最後に管理画面の.tplを編集する。

9./data/Smarty/templates/default/admin/order/disp.tplと/data/Smarty/templates/default/admin/order/edit.tplを編集

/data/Smarty/templates/default/admin/order/disp.tplのテーブルの任意の場所に以下のソースを追加。


<tr class="fs12n">
<td bgcolor="#f0f0f0" colspan="5">▼オプション</td>
</tr>
<tr class="fs12n">
<td bgcolor="#ffffff" colspan="5" height="24">
<!--{assign var=add_option value="`$arrForm.add_option.value`"}-->
<!--{$arrOPTION[$add_option]|default:"指定なし"}--></td>
</tr>

/data/Smarty/templates/default/admin/order/edit.tplのテーブルのメモ項目の下に以下のソースを追加。


<tr class="fs12n">
<td bgcolor="#ffffff" colspan="6">
<!--{assign var=key value="add_option"}-->
<span class="red12"><!--{$arrErr[$key]}--></span>
<select name="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
<option value="" selected="0">指定無し</option>
<!--{html_options options=$arrOPTION selected=$arrForm[$key].value}-->
</select>
</td>
</tr>

以上です。

秀和システムのec-cubeの公式ガイドブックカスタマイズ編をコピペしただけだけど、結構追加項目が多くて難儀しました。

※ec-cubeの公式ガイドブックの内容はバージョン2.4.0に対応しています。2.4.1の場合、拡張された機能の記述がありますので、そのままコピペした内容をアップロードするのではなく、のし機能に対応した部分だけ付け加えていくほうが良いでしょう。

/data/class/pages/フォルダはあまり編集したくない領域ですけど、ネットショップでのし紙や包装の選択項目は必須だと思いますので、仕方がない。

多分ec-cubeの次期バージョンでは実装される要項だと思いますので、バージョンアップまで待ったほうがよいのかも知れません。

しかし、もし次期バージョンでこの機能が実装されなかったら、..カスタムするしかないですね。

最後、お客様に届く受注メールのテンプレートも一応、今回ののしの選択の項目を付け加える必要がありますね。

方法は、ec-cubeフォーラムに載っていました。

data/Smarty/templates/default/mail_templates/order_mail.tplを編集します。

以下の一文を、配送情報とご請求金額の項目のところに追加。


オプション:<!--{if $arrOrder.add_option == 0}-->指定なし<!--{elseif $arrOrder.add_option == 1}-->簡易包装<!--{elseif $arrOrder.add_option == 2}-->完全包装<!--{elseif $arrOrder.add_option == 3}-->無地のし<!--{elseif $arrOrder.add_option == 4}-->御祝<!--{elseif $arrOrder.add_option == 5}-->寿<!--{elseif $arrOrder.add_option == 6}-->内祝<!--{elseif $arrOrder.add_option == 7}-->長寿祝<!--{elseif $arrOrder.add_option == 8}-->御中元<!--{elseif $arrOrder.add_option == 9}-->御歳暮<!--{elseif $arrOrder.add_option == 10}-->祝開店<!--{elseif $arrOrder.add_option == 11}-->祝開業<!--{elseif $arrOrder.add_option == 12}-->御見舞<!--{elseif $arrOrder.add_option == 13}-->御霊前<!--{elseif $arrOrder.add_option == 14}-->志<!--{else}-->その他(お問い合せ欄にご入力ください)<!--{/if}-->

上記のソースは自分の例です。

上記の<!--{if $arrOrder.add_option == 0}-->の番号は、ec-cube管理画面のマスタ-データ管理か、phpmyadminでmtb_optionを開いたら確認できます。

後はテストを繰り返しながら、気になるところを直していきます。

最終更新 ( 2009年 9月 18日(金曜日) 10:30 )
 

Add your comment

Your name:
Your email:
Your website:
タイトル:
Comment: