EC-CUBE2.12 「会員価格設定プラグイン」によるカスタマイズへの影響

「会員価格設定プラグイン」は、商品登録のカスタマイズには不可欠な「SC_Product.php」ファイルのコードを一部書き換えてしまいますので、プラグインを導入した際、商品詳細ページ等でそれまで表示されていたものが、表示されない状態になります。

本サイトのカスタマイズでは、「期間限定販売」「Youtube動画表示」「GoogleMap表示」に影響します。

カスタマイズしたコードを、会員価格設定プラグインのファイルに再設定することで、この問題を回避します。

1 サーバーから、プラグインのインストール時に生成されたフォルダをダウンロードします。
■data/downloads/plugin/MemberPrice

2 次に、フォルダ内の、plg_MemberPrice_SC_Product.phpを2カ所修正し、アップロードします。
修正箇所は次のとおり

(1) /* ▼期間限定販売①/② */ から /* ▲期間限定販売 */ までを挿入

function lists(&$objQuery) {
$col = <<< __EOS__
product_id
,product_code_min
,product_code_max
,name
,comment1
,comment2
,comment3
,main_list_comment
,main_image
,main_list_image
,price01_min
,price01_max
,price02_min
,price02_max
,plg_memberprice_price03_min
,plg_memberprice_price03_max
,stock_min
,stock_max
,stock_unlimited_min
,stock_unlimited_max
,deliv_date_id
,status
,del_flg
,update_date
/* ▼期間限定販売①/② */
,endsell_date
,arrival_date
,(SELECT CASE WHEN coalesce(endsell_date, NOW()) = NOW() THEN 1
WHEN endsell_date >= NOW() THEN 1 ELSE 0 END) AS endsell, (SELECT CASE WHEN
coalesce(arrival_date,NOW()) = NOW() THEN 1 WHEN NOW() >= arrival_date THEN
1 ELSE 0 END) AS arrival
/* ▲期間限定販売 */
__EOS__;
$res = $objQuery->select($col, $this->alldtlSQL());
return $res;
}

(2) /* ▼期間限定販売②/② Youtube、GoogleMap */ から /* ▲期間限定販売 Youtube、GoogleMap */
までを挿入

function alldtlSQL($where_products_class = '') {
if (!SC_Utils_Ex::isBlank($where_products_class)) {
$where_products_class = 'AND (' . $where_products_class . ')';
}
/*
* point_rate, deliv_fee は商品規格(dtb_products_class)ごとに保持しているが,
* 商品(dtb_products)ごとの設定なので MAX のみを取得する.
*/
$sql = <<< __EOS__
(
SELECT
dtb_products.product_id
,dtb_products.name
,dtb_products.maker_id
,dtb_products.status
,dtb_products.comment1
,dtb_products.comment2
,dtb_products.comment3
,dtb_products.comment4
,dtb_products.comment5
,dtb_products.comment6
,dtb_products.note
,dtb_products.main_list_comment
,dtb_products.main_list_image
,dtb_products.main_comment
,dtb_products.main_image
,dtb_products.main_large_image
,dtb_products.sub_title1
,dtb_products.sub_comment1
,dtb_products.sub_image1
,dtb_products.sub_large_image1
,dtb_products.sub_title2
,dtb_products.sub_comment2
,dtb_products.sub_image2
,dtb_products.sub_large_image2
,dtb_products.sub_title3
,dtb_products.sub_comment3
,dtb_products.sub_image3
,dtb_products.sub_large_image3
,dtb_products.sub_title4
,dtb_products.sub_comment4
,dtb_products.sub_image4
,dtb_products.sub_large_image4
,dtb_products.sub_title5
,dtb_products.sub_comment5
,dtb_products.sub_image5
,dtb_products.sub_large_image5
,dtb_products.sub_title6
,dtb_products.sub_comment6
,dtb_products.sub_image6
,dtb_products.sub_large_image6
,dtb_products.del_flg
,dtb_products.creator_id
,dtb_products.create_date
,dtb_products.update_date
,dtb_products.deliv_date_id
,T4.product_code_min
,T4.product_code_max
,T4.price01_min
,T4.price01_max
,T4.price02_min
,T4.price02_max
,T4.plg_memberprice_price03_min
,T4.plg_memberprice_price03_max
,T4.stock_min
,T4.stock_max
,T4.stock_unlimited_min
,T4.stock_unlimited_max
,T4.point_rate
,T4.deliv_fee
,T4.class_count
,dtb_maker.name AS maker_name
/* ▼期間限定販売②/② Youtube、GoogleMap */
,dtb_products.map_url
,dtb_products.youtube
,dtb_products.endsell_date
,dtb_products.arrival_date
,(SELECT CASE WHEN coalesce(dtb_products.endsell_date,
NOW()) = NOW() THEN 1 WHEN dtb_products.endsell_date >= NOW() THEN 1 ELSE 0
END) AS endsell
,(SELECT CASE WHEN
coalesce(dtb_products.arrival_date,NOW()) = NOW() THEN 1 WHEN NOW() >=
dtb_products.arrival_date THEN 1 ELSE 0 END) AS arrival
/* ▲期間限定販売 Youtube、GoogleMap */
FROM dtb_products
JOIN (
SELECT product_id,
MIN(product_code) AS product_code_min,
MAX(product_code) AS product_code_max,
MIN(price01) AS price01_min,
MAX(price01) AS price01_max,
MIN(price02) AS price02_min,
MAX(price02) AS price02_max,
MIN(plg_memberprice_price03) AS
plg_memberprice_price03_min,
MAX(plg_memberprice_price03) AS
plg_memberprice_price03_max,
MIN(stock) AS stock_min,
MAX(stock) AS stock_max,
MIN(stock_unlimited) AS stock_unlimited_min,
MAX(stock_unlimited) AS stock_unlimited_max,
MAX(point_rate) AS point_rate,
MAX(deliv_fee) AS deliv_fee,
COUNT(*) as class_count
FROM dtb_products_class
WHERE del_flg = 0 $where_products_class
GROUP BY product_id
) AS T4
ON dtb_products.product_id = T4.product_id
LEFT JOIN dtb_maker
ON dtb_products.maker_id = dtb_maker.maker_id
) AS alldtl
__EOS__;
return $sql;
}

★さらに、カートセッションでカスタマイズが効かなくなってしまった場合は、plg_MemberPrice_SC_CartSession.phpに注目です