質問 > フロント機能 > [2.13.5] 販売最低購入数について |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
l58 |
投稿日時: 2017/1/28 14:46
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について 出来ました!!
丁重にご教授頂きありがとうございます! 無事に希望通りの機能を追加することが出来ました。 本当にありがとうございました。 |
468 |
投稿日時: 2017/1/27 13:13
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: [2.13.5] 販売最低購入数について 返信が遅くなってしまいましたが、
(数日前からコミュニティに投稿できない?状態になってました・・・) /data/class/db/SC_DB_DBFactory.php 245行目付近にある function alldtlSQL()内にてSQLが記述されていると思いますが、 以下のようにsale_limitに関する取得を追記すればいいかと思います。 [cord] $sql = <<< __EOS__ ( SELECT dtb_products.* ,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.point_rate ,T4.deliv_fee ,T4.sale_limit ,dtb_maker.name AS maker_name FROM dtb_products INNER 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 ,MAX(point_rate) AS point_rate ,MAX(deliv_fee) AS deliv_fee ,MIN(sale_limit) AS sale_limit 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__; [/cord] MIN(sale_limit) AS sale_limitで記述していますので、 前回質問させていただいた以下のような商品の場合、2が取得されます。 アイス 抹茶 S 販売最低個数:10個 アイス 抹茶 M 販売最低個数:5個 アイス 抹茶 L 販売最低個数:2個 MIN → MAXに変更すると10が取得されるようになりますので、 一番大きい数値を取得したい場合は、要件に合わせて変更してください。 あとは、data/Smarty/templates/my_template/detail.tpl側で $arrProduct.sale_limit で値を出力できるのではないかと思います。
|
l58 |
投稿日時: 2017/1/23 13:28
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について ご連絡が遅くなり申し訳ありません。
規格ごとの最低販売個数は特にありません。 規格が違っても最低販売個数は一緒です。 商品ごとに設定したいです。 最小値のみです。 最大値(販売数上限)はありません。 宜しくお願いします。 |
468 |
投稿日時: 2017/1/17 16:52
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: [2.13.5] 販売最低購入数について 規格毎に販売最低個数に異なる数値がセットされた時はどのような動きを想定されていますか?
最小値ですか?最大値ですか? 例えば、以下のような商品が登録されている場合、アイスの詳細ページを表示した時には、どの数字を表示させたいのでしょうか? アイス 抹茶 S 販売最低個数:10個 アイス 抹茶 M 販売最低個数:5個 アイス 抹茶 L 販売最低個数:2個
|
l58 |
投稿日時: 2017/1/17 16:31
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について ご連絡ありがとうございます。
function alldtlSQL() に記述するSQLの記述が分かりません。 DBはMySQLになります。 初心者なりに思考錯誤しておりますが。まだまだ勉強不足で申し訳ありません。 よろしくお願いします。 |
468 |
投稿日時: 2017/1/13 23:07
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: [2.13.5] 販売最低購入数について /data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php
/data/class/db/SC_DB_DBFactory.php function alldtlSQL() に記述するSQLの記述が分からないという事でしょうか? ご利用のDBによって記述が変わりますが、 MySQLでしょうか?PostgreSQLでしょうか?
|
l58 |
投稿日時: 2017/1/13 18:31
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について 返信が遅くなってしまって申し訳ありません。
色々調べてみたのですが、 dtb_products_class.sale_limitを取得する記述がよくわかりませんでした。 大変恐縮なのですが、もう少し具体的に教えて頂けませんでしょうか? |
468 |
投稿日時: 2016/12/26 11:57
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: [2.13.5] 販売最低購入数について まず商品詳細画面に渡されている商品情報にsale_limitが含まれていませんので、DBから値を取得するところから変更する必要があります。
商品詳細のデータを取得する際の項目を指定している箇所は以下のようです。 /data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php /data/class/db/SC_DB_DBFactory.php function alldtlSQL()の中に該当のSQLの記述があります。 MySQLとPostgreSQLで実行している箇所が違いますのでご注意ください。 そこでdtb_products_class.sale_limitを取得する記述を追記すれば、 /product/detail.tpl内で、$arrProduct.sale_limitで販売制限を取得する事が出来そうです。 <!--{$arrForm.quantity.value|default:$arrProduct.sale_limit|h}--> の記述でデフォルト値もセット出来そうですし、 <!--{$arrProduct.sale_limit|h}-->個以上から購入可能です。といったメッセージも表示できると思います。 SQLを記述する際の注意点は、dtb_products_classにsale_limitのカラムがあるようですので、stockなどと同じようにMAX()かMIN()等の集約関数を記述する必要があるかと思います。 以上、よろしくお願いします。
|
l58 |
投稿日時: 2016/12/25 21:35
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について ご教授いただいたとおり、
data/class/SC_CartSession.phpを下記のように変更したところ 「販売制限数」を「最低販売数」に変更することが出来ました。 ありがとうございました!! /* * 販売制限数, 在庫数のチェック */ $limit = $objProduct->getBuyLimit($product); if (!is_null($limit) && $arrItem['quantity'] < $limit) { if ($limit < 0) { $this->setProductValue($arrItem['id'], 'quantity', $limit, $productTypeId); $total_inctax = $limit * SC_Helper_TaxRule_Ex::sfCalcIncTax($arrItem['price'], $product['product_id'], $arrItem['id'][0]); $this->setProductValue($arrItem['id'], 'total_inctax', $total_inctax, $productTypeId); $tpl_message .= '※「' . $product['name'] . '」は販売制限(または在庫が不足)しております。'; $tpl_message .= "一度に数量{$limit}を超える購入はできません。\n"; } else { $this->delProduct($arrItem['cart_no'], $productTypeId); $tpl_message .= '※「' . $product['name'] . "」は{$limit}個以上 からのお買い上げとなります。\n"; continue; } ------------------------------------------------------------ 追加の質問なのですが さらに、商品詳細ページ購入箇所の「数量」を指定する欄に設定した「最低販売数」を表示させるにはどうすればよいのでしょうか。 通常は「1」と表示されているのですが data/Smarty/templates/my_template/detail.tpl <!--★数量★--> <tr> <th>数量:</th> <td><input type="text" class="box60" name="quantity" value="<!--{$arrForm.quantity.value|default:1|h}-->" maxlength="<!--{$smarty.const.INT_LEN}-->" style="<!--{$arrErr.quantity|sfGetErrorColor}-->" /> <!--{if $arrErr.quantity != ""}--> <br /><span class="attention"><!--{$arrErr.quantity}--></span> <!--{/if}--> </td> </tr> 上記の中の <input type="text" class="box60" name="quantity" value="<!--{$arrForm.quantity.value|default:1|h}--> を修正すればよいのかとは思ったのですが、 「1」ではなくて「最低販売制限数」を表示させるにはどうすればよいのでしょうか。 また、ここの横に注意書き等で {$sale_limit}個以上 からのお買い上げとなります 等の記述を加えるにはどのように書けばよいのでしょうか。 下記を参考に見てみましたが、バージョンが違うためか、修正箇所が見つけられませんでした。 http://ec-cube.nakweb.com/blog/1906.html お分かりになりましたら、ご教授いただけると幸いです。 よろしくお願い致します。 |
l58 |
投稿日時: 2016/12/20 19:06
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について ありがとうございます。
やってみます。 取り急ぎお礼まで。 また報告させて頂きます。 |
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |