上記の書籍をもとに書いています。
本の中では、EC-CUBEのインストールファイルに埋め込む方法まで踏み込んで解説されています。
ここでは、既にインストールされているEC-CUBEに機能を追加するために、その箇所だけを取り出して書きます。
ファイルの内容については、本に書かれていますので、お読みください。
===================================
(1)データベースを拡張する。
①「dtb_prpducts」に「のし」の選択可・不可を保持するためのカラム「noshi」を追加する。
フィールド:noshi
種別:smallint
デフォルト値:2
ヌル(NULL):not null
②「dtb_order」に購入時に選択された「のし」情報を保持するためのカラム「gift_paper」を追加する。
フィールド:gift_paper
種別:smallint
デフォルト値:NULL
ヌル(NULL):チェックする
③「dtb_order_temp」(受注情報一時保存)に購入時に選択された「のし」情報を保持するためのカラム「gift_paper」を追加する。
フィールド:gift_paper
種別:smallint
デフォルト値:NULL
ヌル(NULL):チェックする
④マスターテーブルに以下の2つを追加
■データベースに新しいテーブルを作成する
名前:mtb_noshi
フィールド数:3
↓
○フィールド:id 種別:smallint デフォルト値:NULL NULL:チェック インデックス:primary
○フィールド:name 種別:text デフォルト値:NULL NULL:チェック
○フィールド:rank 種別:smallint デフォルト値:0 NULL:not null
■データベースに新しいテーブルを作成する
名前:mtb_gift_paper
フィールド数:3
↓
○フィールド:id 種別:smallint デフォルト値:NULL NULL:チェック インデックス:primary
○フィールド:name 種別:text デフォルト値:NULL NULL:チェック
○フィールド:rank 種別:smallint デフォルト値:0 NULL:not null
⑤一端管理画面を開き、値を登録する。「システム設定>マスターデータ管理」
■mtb_noshi
ID:1 値:可
ID:2 値:不可
■mtb_gift_paper
ID:0 値:希望しない
ID:1 値:無地のし(紅白)
ID:2 値:内祝(蝶むすび)
ID:3 値:内祝(むすび切り)
ID:4 値:内祝(婚礼)
ID:5 値:快気祝
ID:6 値:粗供養
ID:7 値:志(蓮のし)
ID:8 値:無地のし(仏)
ID:9 値:御礼
ID:10 値:御挨拶
ID:11 値:その他
⑥管理者が商品を登録する際、のしの選択「可」「不可」の初期値をパラメータ設定で行う。
「mtb_constants」テーブルに、カラムを挿入する。
id:DEFAULT_PRODUCT_NOSHI
name:2
rank:1231(適宜)
remarks:のしデフォルト選択値(1:可 2:不可)
★管理画面→パラメーター設定で、「この内容で登録する」をクリックすると反映される。
(2)カートセッションの管理
■data/class/SC_CartSession.php
「// カート内にある商品IDを全て取得する」の前に挿入
/** * カート内の商品IDを取得する * * @param $cartKey カートキー名 * @return array カート内の商品IDの配列 */ function getCartProductID($cartKey) { // カートキーの最大要素番号を取得する $max = $this->getMax($cartKey); // 全てのカートに含まれている商品IDを取得する for($i = 0; $i <= $max; $i++) { if($this->cartSession[$cartKey][$i]['cart_no'] != "") { $arrRet[] = $this->cartSession[$cartKey][$i]['productsClass']['product_id']; } } return $arrRet; }
(3)DB関連で共通の処理を追加
■data/class_extends/helper_extends/SC_Helper_DB_Ex.php
class SC_Helper_DB_Ex extends SC_Helper_DB内に挿入
/* CUORECUSTOM START */ /** * 指定されたIDの商品にのし選択可能商品が * 存在するかで「のし選択」項目の表示有無を決定する. * * @param array $arrProductid 商品IDの配列 * @return bool true:のし選択可能商品がある false:のし選択可能商品が無し */ function sfJudgeShowGiftPaper($arrProductid) { // 商品IDが一件もない場合、falseで終了 if(strlen($arrProductid[0] < 1)) return false; // カート内にのし選択可能商品が存在する判断する為のSQL用WHERE句を作成する $where = "noshi = 1 AND product_id IN("; $first = true; foreach($arrProductid as $val) { if(!$first) { $where .= ","; } else { $first = false; } $where .= "?"; $sqlval[] = $val; } $where .= ")"; // カート内ののし選択可能商品の件数を取得する $objQuery =& SC_Query_Ex::getSingletonInstance(); $cnt = $objQuery->count("dtb_products", $where, $sqlval); return $cnt > 0; } /* CUORECUSTOM END */
(4)管理画面→商品管理に「のし」項目を追加
■data/class/page/admin/products/LC_Page_Admin_Products_Product.php
5カ所追加
※本の中では、LC_Page_Admin_Products_Product_EX.phpファイルへのカスタマイズを紹介していますが、カスタマイズは1つのファイルにまとめておきたかったので、LC_Page_Admin_Products_Product.phpに追加しました。(以下同じ)
■data/Smarty/templates/admin/products/product.tpl
■data/Smarty/templates/admin/products/confirm.tpl
(5)管理画面→受注管理に「のしの種類」情報を追加
■data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
3カ所追加
■data/Smarty/templates/admin/order/edit.tpl
(6)「MYページ/購入履歴詳細」に「のしの種類」情報を追加
■data/class/pages/mypage/LC_Page_Mypage_History.php
1カ所
■data/Smarty/templates/default/mypage/history.tpl
■data/Smarty/templates/mobile/mypage/history.tpl
■data/Smarty/templates/sphone/mypage/history.tpl
(7)「商品購入/お支払い方法・お届け時間等の指定」に「のしの種類」情報を追加
■data/class/pages/shopping/LC_Page_Shopping_Payment.php
■data/Smarty/templates/default/shopping/payment.tpl
■data/Smarty/templates/mobile/shopping/payment.tpl
■data/Smarty/templates/sphone/shopping/payment.tpl
(8)「商品購入/ご入力内容のご確認」に「のしの種類」情報を追加
■data/class/pages/shopping/LC_Page_Shopping_Confirm.php
■data/Smarty/templates/default/shopping/confirm.tpl
■data/Smarty/templates/mobile/shopping/confirm.tpl
■data/Smarty/templates/sphone/shopping/confirm.tpl