質問 > フロント機能 > [2.13.5] 販売最低購入数について |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
l58 |
投稿日時: 2016/12/17 20:00
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
[2.13.5] 販売最低購入数について 商品ごとに最低販売個数を設けるにはどうすればよいのでしょうか。
商品Aは1個から(1個、2個〜) 商品Bは20個から(21個、22個、〜) としたいです。 下記の過去のスレッドを拝見しましたが、わかりませんでした。 具体的にお分かりになる方がいましたらご教授願えますでしょうか。 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=10144&forum=10 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=9070&forum=10 当方初心者です。 どうかよろしくお願い致します。 --------------------------------------------------------------- [EC-CUBE] 2.13.5 [レンタルサーバ] WADAX [OS] WIN7 [PHP] PHP 5.3.3 [データベース] MySQL 5.1.73 ------------------------------------------------------------- |
468 |
投稿日時: 2016/12/19 12:13
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: [2.13.5] 販売最低購入数について 商品ごとに最低販売個数を設けるという事は、
・DBの商品テーブルに項目を追加 ・管理画面の商品登録画面に項目を追加してDBへの登録処理を実装 ・フロントの購入処理の中で最低販売個数を判定する処理を実装 と色々な箇所のカスタマイズが必要ではないかと思います。 商品数が10個未満と少なく、入れ替わりも無いのであれば、 DBや管理側のカスタマイズはせずに、フロントのカスタマイズだけでも対応できるかもしれませんが・・・。
|
l58 |
投稿日時: 2016/12/19 21:25
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について ご連絡ありがとうございます。
やはり難しいのですね。 プラグインなどあれば大変うれしいのですが、探しましたが見つからず、どうしても付けたい機能なので途方にくれています。 商品数は1000以上あり、商品によって、20個以上、30個以上、50個以上とメーカー希望個数があります。 販売個数に上限はないので、例えば販売制限数の箇所を全て上限から下限に変更すればよいのかと思いましたが、修正ファイルの全てがどこにあるのかわかりません。 修正ファイルの箇所だけでもお分かりになりますでしょうか? |
468 |
投稿日時: 2016/12/20 11:29
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: [2.13.5] 販売最低購入数について 手元にあったソースがECCUBE2.13.3なので、行数は異なるかもしれませんが、
/data/class/SC_CartSession.php 608行目 function checkProducts()内に販売制限数をチェックしている記述があります。
このあたりの条件を書き換えれば、上限を下限として変更できると思います。
|
l58 |
投稿日時: 2016/12/20 19:06
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について ありがとうございます。
やってみます。 取り急ぎお礼まで。 また報告させて頂きます。 |
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 お分かりになりましたら、ご教授いただけると幸いです。 よろしくお願い致します。 |
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 |
投稿日時: 2017/1/13 18:31
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について 返信が遅くなってしまって申し訳ありません。
色々調べてみたのですが、 dtb_products_class.sale_limitを取得する記述がよくわかりませんでした。 大変恐縮なのですが、もう少し具体的に教えて頂けませんでしょうか? |
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/17 16:31
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: [2.13.5] 販売最低購入数について ご連絡ありがとうございます。
function alldtlSQL() に記述するSQLの記述が分かりません。 DBはMySQLになります。 初心者なりに思考錯誤しておりますが。まだまだ勉強不足で申し訳ありません。 よろしくお願いします。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |