販売制限数という商品属性が以前から追加されていたようですが、最近その存在に気づきました。
詳細仕様は不明ですが、販売制限数を超える個数をカートに投入した場合、カートの中を見るページで、
※「XXX」は販売制限(または在庫が不足)しております。一度に数量Xを超える購入はできません。
というメッセージが表示され、購入が制限されます。
ショップによってはなかなか便利かもしれませんが、商品詳細ページに販売制限数が表示されていても良いですね。
というわけで、やってみました。
1.data/class/SC_Product.php の alldtlSQLメソッドを以下のように修正
/** * 商品詳細の SQL を取得する. * * @param string $where_products_class 商品規格情報の WHERE 句 * @return string 商品詳細の SQL */ 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.stock_min ,T4.stock_max ,T4.stock_unlimited_min ,T4.stock_unlimited_max ,T4.sale_limit_min ,T4.sale_limit_max ,T4.point_rate ,T4.deliv_fee ,T4.class_count ,dtb_maker.name AS maker_name 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(stock) AS stock_min, MAX(stock) AS stock_max, MIN(stock_unlimited) AS stock_unlimited_min, MAX(stock_unlimited) AS stock_unlimited_max, MIN(sale_limit) AS sale_limit_min, MAX(sale_limit) AS sale_limit_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; }
sale_limit に関する記述が合計4行加わっただけです。
2.data/Smarty/templates/default/products/detail.tpl に以下のタグを記述(どこでも良いと思われ)
<!--{$arrProduct.sale_limit_min|h}-->
販売制限数は、dtb_products_class の sale_limit というカラムに格納されます。
そこで規格で変更できるのかなと思いきや、管理画面>商品管理>商品マスター>規格入力画面 に販売制限数のフィールドがありません。
んー、実装忘れかなぁ。次期Ver.で実装されているといいな。