バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

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

サイト内検索

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

フロント機能

新規スレッドを追加する

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

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


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

468
投稿日時: 2017/4/9 19:59
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 534
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系構築カスタマイズご相談ください。
■360°画像ビューワーimg360
■ECCUBE技術資料blog

umebius
投稿日時: 2017/4/9 20:41
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 670
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 カスタマイズ・高速化 ・バグ修正
気軽にお問い合わせください。

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


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
■360°画像ビューワーimg360
■ECCUBE技術資料blog

K9K9
投稿日時: 2017/4/10 21:53
対応状況: 確認中
新米
登録日: 2016/6/2
居住地:
投稿: 10
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
居住地:
投稿: 10
Re: 購入必須商品の設定について
ありがとうございます。
flgが trueだったら カテゴリ1商品選択済み
Falseだったら カテゴリ1商品未選択
としたら良いのでしょうが、記述がわからず困っています。
umebius
投稿日時: 2017/4/12 1:32
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 670
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 カスタマイズ・高速化 ・バグ修正
気軽にお問い合わせください。

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

 



ログイン


EC-CUBEガイドブック

統計情報

総メンバー数は19,356名です
総投稿数は81,274件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1619
4
yuh
1326
5
red
1045
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
778
10
umebius
670
11
tao_s
646
12 sumida 636
13
homan
633
14 karin 609
15 DELIGHT 571
16
468
534
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

EC-CUBEガイドブック
Copyright© LOCKON CO.,LTD. All Rights Reserved.