ITOBEN STYLE > EC-CUBE:購入者が「のし」の付加を選択できるようにする 2012年3月2日カテゴリー:未分類 EC-CUBE:購入者が「のし」の付加を選択できるようにする 上記の書籍をもとに書いています。 本の中では、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を全て取得する」の前に挿入 [php] /** * カート内の商品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; } [/php] (3)DB関連で共通の処理を追加 ■data/class_extends/helper_extends/SC_Helper_DB_Ex.php class SC_Helper_DB_Ex extends SC_Helper_DB内に挿入 [php] /* 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 */ [/php] (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
上記の書籍をもとに書いています。
本の中では、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を全て取得する」の前に挿入
[php]
/**
* カート内の商品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;
}
[/php]
(3)DB関連で共通の処理を追加
■data/class_extends/helper_extends/SC_Helper_DB_Ex.php
class SC_Helper_DB_Ex extends SC_Helper_DB内に挿入
[php]
/* 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 */
[/php]
(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