バージョン選択

フォーラム

メニュー

オンライン状況

75 人のユーザが現在オンラインです。 (64 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 74
banajin もっと...

サイト内検索

質問 > フロント機能 > ショップでの最低購入金額を設定したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
TamaDongu
投稿日時: 2014/5/29 1:55
対応状況: −−−
新米
登録日: 2014/5/29
居住地:
投稿: 5
ショップでの最低購入金額を設定したい
こんにちは。
EC-CUBE初心者の者です。

お客様が購入手続きをする時に、カートの合計金額が1000円以下の場合は、購入手続きへと移れないように設定したいのです。
あとその時に、「最低購入金額は1000円です」という注意書きも表示したいです。

(具体的には、このようなシステムですhttp://www.ocnk.net/faq/index.php?action=artikel&cat=281582&id=576&artlang=ja)


しかし今はその方法が分からず、
基本情報管理>支払方法設定の利用条件を[下限1000円]に設定することで、強制的に購入できないようにしています。

しかしこの方法だと、お客様も混乱すると思うので、上記の方法をEC-CUBEで行う術をどなたかご教授いただけないでしょうか。

お願いします<m(__)m>
tommy0714
投稿日時: 2014/5/29 9:06
対応状況: −−−
半人前
登録日: 2014/5/1
居住地:
投稿: 30
Re: ショップでの最低購入金額を設定したい
EC-CUBEデフォルトの設定ではご要望の対応はできないと思います。

EC-CUBE2.12系以上であれば、バージョンに合ったプラグインを探すか、あるいは、カートのプログラムをカスタマイズするしかないと思います。


----------------

tshino
投稿日時: 2014/5/29 9:41
対応状況: −−−
一人前
登録日: 2013/4/9
居住地:
投稿: 76
Re: ショップでの最低購入金額を設定したい
デフォルトの機能でないと実現はできないです。

もし、カスタマイズするならカート表示の際に料金を計算し、
カートから先に進めないようにする形式になると思います。

どうしてもカスタマイズができないのであれば、
金額によって使用できる支払い方法を減らすとかでしょうか・・・
piropiro
投稿日時: 2014/5/29 11:34
対応状況: −−−
常連
登録日: 2014/4/25
居住地:
投稿: 56
Re: ショップでの最低購入金額を設定したい
カスタマイズ場所は、
data/class/pages/cart/LC_Page_Cart.phpです。

modeで検索してください。
ボタンクリック時にどのモードかを振り分けてます。
(120~130行目だった気がします。)


この中でconfilm モードで(購入ボタンクリック時)
もし商品が1件以上ならば、
購入ページへ飛ばすような処理が施されてます。
この中のif文「もし商品が1件以上ならば」に加えて
「もし合計金額が1000円以上なら」という処理を
加えると実装可能だと思います。
TamaDongu
投稿日時: 2014/5/29 13:15
対応状況: −−−
新米
登録日: 2014/5/29
居住地:
投稿: 5
Re: ショップでの最低購入金額を設定したい
返信ありがとうございます<m(__)m>
デフォルトの設定で出来ない事が分かり、非常に参考になりました。
EC-CUBEサイト内の有料/無料プラグインを探してみましたが、そのような物はなかったので、残念です。
TamaDongu
投稿日時: 2014/5/29 13:33
対応状況: −−−
新米
登録日: 2014/5/29
居住地:
投稿: 5
Re: ショップでの最低購入金額を設定したい
カスタマイズについての言及、ありがとうございます<m(__)m>

piropiro様のおっしゃる通りに探すと、data/class/pages/cart/LC_Page_Cart.phpを見つける事が出来ました。

しかし何分、PHPについては全くの初心者ですので、四苦八苦しております。


130行目あたりに
-----------------------------------------
// カート商品が1件以上存在する場合
if (count($cartList) > 0)
-----------------------------------------

を見つけたのですが、これを
-----------------------------------------------
// カート商品が1件以上存在する場合
$total = $cart->getTotalPrice();
if (count($cartList) > 0 and $total > 1000)
-----------------------------------------------

に変更したら、値段がどのような場合であっても、[購入手続きページへ]のボタンをクリックすると、システムエラーになってしまうので、上記のやり方では間違っているんだと思いました。


PHP初心者なので、「もし合計金額が1000円以上なら」の処理の仕方が分からず、上記の[$total = $cart->getTotalPrice();]は、http://www.soycms.net/blog/article/SOY_Shop%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E8%A7%A3%E8%AA%AC_%E3%82%AB%E3%83%BC%E3%83%88%E3%81%A7%E8%B3%BC%E5%85%A5%E3%81%AE%E6%9D%A1%E4%BB%B6%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B
のサイトを参考にしました。

しかし↑のサイトはSOY SHOP CMS用なので、EC-CUBEとは仕様が違うのかな、とも思います。


[PHP カート] [php EC-CUBE]等で調べてもよく分からなかったので、どなたかpiropiro様のおっしゃった
-----------------------------------------------
「もし合計金額が1000円以上なら」という処理を
加えると実装可能だと思います。
--------------------------------------------
のPHPの記述の仕方をご教授願えたら幸いです。

よろしくお願いします<m(__)m>

piropiro
投稿日時: 2014/5/29 14:23
対応状況: −−−
常連
登録日: 2014/4/25
居住地:
投稿: 56
Re: ショップでの最低購入金額を設定したい
お疲れ様です。
ECCUBEなのでやり方や関数が異なります。
SC_Cartsession.phpに登録してある
getAllProductsTotalという関数が使えそうです。


case 'confirm':
// カート内情報の取得
$cartList = $objCartSess->getCartList($cartKey);
$cartTotal = $objCartSess->getAllProductsTotal($cartKey);
// カート商品が1件以上存在する場合
if (count($cartList) > 0 && $cartTotal >1000) {
// カートを購入モードに設定
$this->lfSetCurrentCart($objSiteSess, $objCartSess, $cartKey);

// 購入ページへ
SC_Response_Ex::sendRedirect(SHOPPING_URL);
SC_Response_Ex::actionExit();
}
break;


こんな感じでできそうです。(できました)
$cartTotalで合計金額を求める関数を呼び出して、
その金額が1000円以上ならという処理を
if文に加えました。引用:

TamaDongu
投稿日時: 2014/5/29 20:24
対応状況: −−−
新米
登録日: 2014/5/29
居住地:
投稿: 5
Re: ショップでの最低購入金額を設定したい
piropiro様、できました!
アドバイスありがとうございました<m(__)m>

また、他にも方法を見つけたので、今後同じようなことで悩んでいる人の為にも、記述しておきます。


===============================================

1. 1000円未満の時に[購入手続きへ]をクリックすると、赤文字で[ご注文は1000円以上からとなっています]を表示する方法。

===============================================

data/class/pages/cart/LC_Page_Cart.phpの130行目あたりにあるcase'confirm'からbreakまでの部分を下のコードと入れ替えます。

-----------------------------------------------
case 'confirm':
// カート内情報の取得
$cartList = $objCartSess->getCartList($cartKey);
// カート商品が1件以上存在する場合&カート最低金額1000円以上
$cartTotal = $objCartSess->getAllProductsTotal($cartKey);
if (count($cartList) > 0 && $cartTotal > 1000) {
// カートを購入モードに設定
$this->lfSetCurrentCart($objSiteSess, $objCartSess, $cartKey);

// 購入ページへ
SC_Response_Ex::sendRedirect(SHOPPING_URL);
SC_Response_Ex::actionExit();
}
else { $this->tpl_message .= "ご注文は1000円以上からの受付となっています。\n";
}
break;
---------------------------------------------------

これはpiropiro様の方法に、else { $this->tpl_message .= "ご注文は1000円以上からの受付となっています。\n";}を追加しています。



=====================================================

2, 1000円未満の場合は、購入手続きボタンを表示されないようにし、「ご注文は1000円以上からの受付となっています。」と赤文字で表示する方法。

=====================================================


data/Smarty/templates/default/cart/index.tplを変更します。


まず160行目くらいにある

-----------------------------------------------
<!--{if strlen($tpl_error) == 0}-->
<p class="alignC">上記内容でよろしければ「購入手続きへ」ボタンをクリックしてください。</p>
<!--{/if}-->
--------------------------------------------------

を以下のように変更します。
($item.total_inctax) > 1000の部分で[もし1000円以上なら..]と条件をつけ、else文を追加する事により、1000円未満の場合は[ご注文は1000円以上からの受付となっています。]という文を出すようにしています。

--------------------------------------------------
<!--{if strlen($tpl_error) == 0 && ($item.total_inctax) > 1000}-->
<p class="alignC">上記内容でよろしければ「購入手続きへ」ボタンをクリックしてください。</p>
<!--{else}--><p class="alignC"><font color="#FF0000">ご注文は1000円以上からの受付となっています。</font></p>
<!--{/if}-->
-----------------------------------------------------

次に、180行目くらいにある

----------------------------------------------------
<!--{if strlen($tpl_error) == 0}-->
<input type="image" class="hover_change_image" src="<!--{$TPL_URLPATH|h}-->img/button/btn_buystep.jpg" alt="購入手続きへ" name="confirm" />
<!--{/if}-->
-------------------------------------------------------

を下記のように変更します。
また($item.total_inctax) > 1000で条件付けをし、elseを追加することによって、購入手続きボタンを表示しないようにしています。

-----------------------------------------------------
<!--{if strlen($tpl_error) == 0 && ($item.total_inctax) > 1000}-->

<input type="image" class="hover_change_image" src="<!--{$TPL_URLPATH|h}-->img/button/btn_buystep.jpg" alt="購入手続きへ" name="confirm" />
<!--{else}-->


<!--{/if}-->
-------------------------------------------------



返信してくださった皆様、本当にありがとうございました!
TamaDongu
投稿日時: 2015/1/23 16:52
対応状況: −−−
新米
登録日: 2014/5/29
居住地:
投稿: 5
Re: ショップでの最低購入金額を設定したい
上記のコードにミスがあったので、備忘録も兼ねて記載しておきます。



($item.total_inctax) > 1000

の部分は

($arrData[$key].total-$arrData[$key].deliv_fee) > 1000


のように直さないと、動作が上手く行きません。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,308名です
総投稿数は109,693件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.