バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

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

フロント機能

新規スレッドを追加する

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

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


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

468
投稿日時: 2017/4/9 19:59
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 805
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
居住地: Tokyo
投稿: 726
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はまぁ付けておいて良いかなと思います。


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


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


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

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

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


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


K9K9
投稿日時: 2017/4/12 22:33
対応状況: 解決済
半人前
登録日: 2016/6/2
居住地:
投稿: 11
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
居住地: Tokyo
投稿: 726
Re: 購入必須商品の設定について
動いたようで良かったです!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,614名です
総投稿数は83,613件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1663
4
yuh
1433
5
red
1077
6
fukap
907
7
shutta
827
8
468
805
9 ramrun 789
10
tsuji
784
11
umebius
726
12
tao_s
651
13 karin 641
14 sumida 638
15
homan
633
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.