ダウンロード商品販売機能を付けるぞ(9)

ダウンロードコンテンツの販売だから 代引きを選択しないようにしないといけないので カスタマイズをしてみた。

■ハードコードは、後々の事をを考えて(当たり前だけど)無くすために 定数を宣言する場所を探してみた。
data/cashe/mtb_constants.php
ここで、全部宣言するようにするようにした。

■メッセージの文言を変えてみた。
ダウンロードコンテンツは数量関係ないので(多く買ってもらっても良いのだが(笑) 意味がないので)1個以上選択したときの文言を変えた。DVDの物販も絡むので ダウンロードコンテンツの時専用の警告文を出せるようにした。
data/class/helper/SC_Helper_DB.php をいじった。
321行目あたり

if($limit != “” && $limit < $arrCart['quantity']) {
// カート内商品数を制限に合わせる
$objCartSess->setProductValue($arrCart[‘id’], ‘quantity’, $limit);
$quantity = $limit;
$objPage->tpl_message = “※「” . $arrData[‘name’] . “」は販売制限(または在庫が不足)しております。一度にこれ以上の購入はできません。\n”;
} else {
$quantity = $arrCart[‘quantity’];
}

これを改造しようと思ったのだが、商品の情報を納めた配列$arrCartには、カテゴリーID情報が入ってないみたいだった。
330行目

// 商品規格情報の取得
$arrData = $this->sfGetProductsClass($arrCart[‘id’]);

ここでデータを取得してるらしいので sfGetProductsClass を調べてみた。
245行目あたりにあった

/**
* 商品規格情報を取得する.
*
* @param array $arrID 規格ID
* @return array 規格情報の配列
*/
function sfGetProductsClass($arrID) {
list($product_id, $classcategory_id1, $classcategory_id2) = $arrID;

if($classcategory_id1 == “”) {
$classcategory_id1 = ‘0’;
}
if($classcategory_id2 == “”) {
$classcategory_id2 = ‘0’;
}
// 商品規格取得
//2009.06.15
$objQuery = new SC_Query();
$col = “product_id, deliv_fee, name, product_code, main_list_image, main_image, price01, price02, point_rate, product_class_id, classcategory_id1, classcategory_id2, class_id1, class_id2, stock, stock_unlimited, sale_limit, sale_unlimited”;
$table = “vw_product_class AS prdcls”;
$where = “product_id = ? AND classcategory_id1 = ? AND classcategory_id2 = ?”;
$objQuery->setorder(“rank1 DESC, rank2 DESC”);

ここで商品規格を取得してっぽい。テーブルが vw_product_class  となっているので なんだこれ?と思って調べた。ビューという奴らしい。(MySQLは奥が深いのでもっと勉強したいなぁ。。。)
オープンソースECサイト(EC-CUBE)でネット販売システム構築
こちらに、改造方法が乗っていたのでさんこうにしまして SQL文を書き換えた。
>>$table = “vw_product_class AS prdcls,dtb_product_categories”;
として $colを ずらっと書き直した。
これで カテゴリーIDを取得して 分岐して警告文を出せるようになった(;^_^A

コメント

タイトルとURLをコピーしました