バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 購入必須商品の設定について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
K9K9
投稿日時: 2017/4/9 16:35
対応状況: 確認中
半人前
登録日: 2016/6/2
居住地:
投稿: 12
購入必須商品の設定について
Versionは3.0.14です。

ショッピングカート内に特定のカテゴリの商品が1以上含まれているかどうかを判断する方法を教えてください。


カテゴリーID=1の商品が入っていないとレジに進むボタンが表示されないようにして、カテゴリーID=1の商品を選んでくださいという表記をする実装を考えています。

468
投稿日時: 2017/4/9 19:59
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 購入必須商品の設定について
カートの中身をループして商品のカテゴリーを判定する方法があるかと思います。

$flg = false;
$Cart = $app['eccube.service.cart']->getCart();
foreach ($Cart->getCartItems() as $CartItem) {
    $ProductClass = $CartItem->getObject();
    $Product = $ProductClass ->getProduct();
    foreach ($Product->getProductCategories() as $Category) {
        if ($Category->getId() == 1) {
            $flg = true;
        }
    }
}


もっと効率的な記述方法はあると思いますが・・・。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

umebius
投稿日時: 2017/4/9 20:41
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 購入必須商品の設定について
$Product->getProductCategories()のループの部分、CategoryじゃなくてProductCategoryなのでおそらくこうです。




        $flg = false;
        $Cart = $app['eccube.service.cart']->getCart();
        foreach ($Cart->getCartItems() as $CartItem) {
            $ProductClass = $CartItem->getObject();
            $Product = $ProductClass ->getProduct();
            foreach ($Product->getProductCategories() as $ProductCategory) {
                if ($ProductCategory->getCategoryId() == 1) {
                    $flg = true;
                    break 2;
                }
            }
        }


私もProductCategoryやProductTagでよくやってしまうんですが。
breakはまぁ付けておいて良いかなと思います。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

468
投稿日時: 2017/4/10 9:16
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 購入必須商品の設定について
>umebiusさん
1つ処理を飛ばして書いていましたね。
訂正ありがとうございます。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

K9K9
投稿日時: 2017/4/10 21:53
対応状況: 確認中
半人前
登録日: 2016/6/2
居住地:
投稿: 12
Re: 購入必須商品の設定について
ありがとうございます。
あまりよくわかっていないのですが、頂いたコードをどこに書いたらいいのかも分かっておらずご教授頂けると幸いです。引用:

468さんは書きました:
Yuya.u
投稿日時: 2017/4/10 22:26
対応状況: −−−
半人前
登録日: 2017/3/6
居住地:
投稿: 24
Re: 購入必須商品の設定について
カートページで利用したいのであれば
src/Eccube/Controller/CartController.phpのindexメソッド内です。
K9K9
投稿日時: 2017/4/11 21:49
対応状況: −−−
半人前
登録日: 2016/6/2
居住地:
投稿: 12
Re: 購入必須商品の設定について
ありがとうございます。
flgが trueだったら カテゴリ1商品選択済み
Falseだったら カテゴリ1商品未選択
としたら良いのでしょうが、記述がわからず困っています。
umebius
投稿日時: 2017/4/12 1:32
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 購入必須商品の設定について
index内のreturnしている箇所で$flgを渡してください。

return $app->render(
            'Cart/index.twig',
            array(
                'Cart' => $Cart,
                'least' => $least,
                'quantity' => $quantity,
                'is_delivery_free' => $isDeliveryFree,
                'category_ok_flg' => $flg,
            )
        );


twigでcategory_ok_flgを使用してボタンを消せば良いかと思います。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

K9K9
投稿日時: 2017/4/12 22:33
対応状況: 解決済
半人前
登録日: 2016/6/2
居住地:
投稿: 12
Re: 購入必須商品の設定について
大変助かりました。ありがとうございます。やりたいことは実装できました。 後学の為、修正箇所をまとめます。

Ver3.0.14
インストールディレクトリ/src/Eccube/Controller内にある
CartController.php 
public function 内(88行目付近)に下記追加

//カテゴリの商品がカートにあるか確認する
$flg = false;
$Cart = $app['eccube.service.cart']->getCart();
foreach ($Cart->getCartItems() as $CartItem) {
$ProductClass = $CartItem->getObject();
$Product = $ProductClass ->getProduct();
foreach ($Product->getProductCategories() as $ProductCategory) {
if ($ProductCategory->getCategoryId() == 1) {
$flg = true;
break 2;
}
}
}
//ここまで

return $app->render(
'Cart/index.twig',
array(
'Cart' => $Cart,
'least' => $least,
'quantity' => $quantity,
'is_delivery_free' => $isDeliveryFree,
//category_ok_flgを渡すために追加↓
'category_ok_flg' => $flg,
)
);


app/template/テンプレートディレクトリ/Cart/index.twig
のレジに進むの箇所を下記に変更
{% if category_ok_flg %}
<p id="total_box__next_button" >
<a href="{{ path('cart_buystep') }}" class="btn btn-success btn-block">レジに進む</a>
</p>
<p id="total_box__top_button">
<a href="{{ url('top') }}" class="btn btn-info btn-block">商品を追加する</a>
</p>
{% else %}
<p id="total_box__top_button">
<a href="{{ url('product_list') }}?category_id=1" class="btn btn-info btn-block">カテゴリ1の商品を選んでください</a>
</p>
{% endif %}



これで想定していた通りの動作ができました。
ありがとうございました。
umebius
投稿日時: 2017/4/13 12:56
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 購入必須商品の設定について
動いたようで良かったです!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
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.