バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
qahrk
投稿日時: 2017/9/9 21:48
対応状況: −−−
半人前
登録日: 2017/9/3
居住地:
投稿: 12
商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい
お世話になります。
[EC-CUBE]3.0.14(新規インストール)
[サーバー]ロリポップ

特定商品のみカートを非表示にして、代わりにメッセージを表示させたいです。

商品詳細ページにて在庫有無に関わらず、特定の商品のみカートボタンを非表示にして購入出来ないようにするため調べているのですが、デフォルトの在庫有無での判定のカート購入可否の設定から解決出来ずに、こちらでご相談させていただければと思います。

【可能な方法として考えていること】
タグ機能を使ってある特定のタグをつけたら、カートを非表示にして代わりにメッセージにさしかえる。


EC CUBE全くの初心者でtwigとjsファイルの関連方法も模索中なレベルなのですが、なにとぞご教授いただけると幸いでございます。

何卒よろしくお願いいたします。





qahrk
投稿日時: 2017/9/10 19:19
対応状況: −−−
半人前
登録日: 2017/9/3
居住地:
投稿: 12
Re: 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい
説明不足でわかりづらいと思い、ざっくりですが、下記に記載させてください。
エラーになってしまうので、基本的なところで色々間違っているのかと思いますが、
まだまだEC CUBEをいじりたてなためtry&errorでなかなか進みません。
また、参考になる事例もなかなか見つけれらないため、大変苦戦しております。
お力お貸し頂けると幸いです。何卒よろしくお願いいたします。

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


<form action="?" method="post" id="form1" name="form1">
<!--▼買い物かご-->
{% if Product.ProductTag is not empty %}
{% for ProductTag in Product.ProductTag %}
<div id="detail_cart_box" class="cart_area">
{% if Product.stock_find and ProductTag.Tag.id != 3 %}


{# 規格 #}
{% if form.classcategory_id1 is defined %}
<ul id="detail_cart_box__cart_class_category_id" class="classcategory_list">
{# 規格1 #}
<li>
<span class="classcategory_title">{{ Product.className1 }}</span>
{{ form_widget(form.classcategory_id1) }}
{{ form_errors(form.classcategory_id1) }}
</li>
{# 規格2 #}
{% if form.classcategory_id2 is defined %}
<li>
<span class="classcategory_title">{{ Product.className2 }}</span>
{{ form_widget(form.classcategory_id2) }}
{{ form_errors(form.classcategory_id2) }}
</li>
{% endif %}
</ul>
{% endif %}

{# 数量 #}
<dl id="detail_cart_box__cart_quantity" class="quantity">
<dt>数量</dt>
<dd>
{{ form_widget(form.quantity) }}
{{ form_errors(form.quantity) }}
</dd>
</dl>

<div class="extra-form">
{% for f in form.getIterator %}
{% if f.vars.name matches '[^plg*]' %}
{{ form_row(f) }}
{% endif %}
{% endfor %}
</div>

{# カートボタン #}
<div id="detail_cart_box__button_area" class="btn_area">
<ul id="detail_cart_box__insert_button" class="row">
<li class="col-xs-12 col-sm-10"><button type="submit" id="add-cart" class="btn btn-primary btn-block prevention-btn prevention-mask">カートに入れる</button></li>
</ul>
{#Favorite product button#}
{% if BaseInfo.option_favorite_product == 1 %}
<ul id="detail_cart_box__favorite_button" class="row">
{% if is_favorite == false %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="favorite" class="btn btn-info btn-block prevention-btn prevention-mask">お気に入りに追加</button></li>
{% else %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="favorite" class="btn btn-info btn-block" disabled="disabled">お気に入りに追加済みです</button></li>
{% endif %}
</ul>
{% endif %}
</div> {#End div#detail_cart_box__button_area #}


{% elseif Product.stock_find and ProductTag.Tag.id == 3 %}

{# カートボタン なし ー こんな感じで特定なタグでカート非表示でメッセージを代わりに表示#}
<div id="detail_cart_box__button_area" class="btn_area">
<ul class="row">
<li class="col-xs-12 col-sm-10"><span>こちらの商品詳細に関しては、お問い合わせボタンよりお問い合わせください。</span></li>
</ul>
{#Favorite product button#}
{% if BaseInfo.option_favorite_product == 1 %}
<ul id="detail_cart_box__favorite_button" class="row">
{% if is_favorite == false %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="favorite" class="btn btn-info btn-block prevention-btn prevention-mask">お気に入りに追加</button></li>
{% else %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="favorite" class="btn btn-info btn-block" disabled="disabled">お気に入りに追加済みです</button></li>
{% endif %}
</ul>
{% endif %}
</div> {#End div#detail_cart_box__button_area #}

{% else %}


{# 在庫がない場合は品切れボタンを表示 #}
<div id="detail_cart_box__button_area" class="btn_area">
<ul class="row">
<li class="col-xs-12 col-sm-10"><button type="button" class="btn btn-default btn-block" disabled="disabled">在庫僅少</button></li>
</ul>
{#Favorite product button#}
{% if BaseInfo.option_favorite_product == 1 %}
<ul id="detail_cart_box__favorite_button" class="row">
{% if is_favorite == false %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="favorite" class="btn btn-info btn-block prevention-btn prevention-mask">お気に入りに追加</button></li>
{% else %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="favorite" class="btn btn-info btn-block" disabled="disabled">お気に入りに追加済みです</button></li>
{% endif %}
</ul>
{% endif %}
</div> {#End div#detail_cart_box__button_area #}
{% endif %} {#End stock find#}
</div>

{% endif %}
{% endfor %}

<!--▲買い物かご-->
{{ form_rest(form) }}
</form>
468
投稿日時: 2017/9/10 21:22
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい
エラーが発生しているのは、forとifのタグの数が合っていないのでは無いでしょうか?

ifの範囲が広くてややこしくなっているような気がしますので、
まずはカートボタンの所だけifを使ってみては如何でしょうか?
あと、ProductTagはループしないと内容が判定できない為、
ショップ用メモ欄等を利用する事は難しいのでしょうか?
判定がシンプルに出来るのではないかと思いました。

どうしてもProductTagで判定するのであれば、
コントローラー側で判定処理を書いて、twigに渡して判定する方法もあるかと思います。
$hasProductTag = false;
foreach ($Product->getProductTag as $ProductTag) {
    if (!is_null($ProductTag) && $ProductTag->getTag()->getId() == 3) {
        $hasProductTag = true;
        break;
    }
}

return $app->render('Product/detail.twig', array(
    'title' => $this->title,
    'subtitle' => $Product->getName(),
    'form' => $form->createView(),
    'Product' => $Product,
    'is_favorite' => $is_favorite,
    'hasProductTag ' => $hasProductTag,
));


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

qahrk
投稿日時: 2017/9/11 23:42
対応状況: −−−
半人前
登録日: 2017/9/3
居住地:
投稿: 12
Re: 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい
468さま

ご教授、誠にありがとうございます。

おっしゃる通り、if とfor を再度確認したところ、最後のifとforとの並びに間違いがありエラーになっておりました。
さらに、ifの範囲がややこしくなっていたので、カートボタンのところだけで再度試してみました。
結果ですが、特定のタグをつけた時にメッセージを表示し、タグを外すとメッセージは消えるようにはなったのですが、
カートボタンはタグがついても外してもそのまま表示されてしまいます。
下記のような表記なのですが、やはり、try and error にて苦戦中です。


{# カートボタン #}
<div id="detail_cart_box__button_area" class="btn_area">
<ul id="detail_cart_box__insert_button" class="row">
{% if Product.ProductTag is not empty %} {# added #}
{% for ProductTag in Product.ProductTag %} {# added #}
{% if ProductTag.Tag.id == 3 %} {# added #}
<li class="col-xs-12 col-sm-10"><span>こちらの商品詳細に関しては、お問い合わせボタンよりお問い合わせください。</span></li>
{% else %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="add-cart" class="btn btn-primary btn-block prevention-btn prevention-mask">カートに入れる</button></li>
{% endif %}
{% endfor %}
{% endif %}
</ul>


{#Favorite product button#}
{% if BaseInfo.option_favorite_product == 1 %}
<ul id="detail_cart_box__favorite_button" class="row">
{% if is_favorite == false %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="favorite" class="btn btn-info btn-block prevention-btn prevention-mask">お気に入りに追加</button></li>
{% else %}
<li class="col-xs-12 col-sm-10"><button type="submit" id="favorite" class="btn btn-info btn-block" disabled="disabled">お気に入りに追加済みです</button></li>
{% endif %}
</ul>
{% endif %}
</div> {#End div#detail_cart_box__button_area #}

{% else %}

{# 在庫がない場合は品切れボタンを表示 #}


また、必ずしもタグでの判断でなくては良いのですが、デフォルトでついてる機能を使ってできないかと考えた結果がタグになったため、
アドバイスいただいた『ショップ用メモ欄等を利用する事』でも可能であれば全く問題ありません。
ただ、その場合ですと、全く検討がつかずです。例えば、どのような方法になりますでしょうか?
ご教授いただけますと大変幸いでございます。

何卒よろしくお願いいたします。


p.s. ご指南いただいた、『コントローラー側で判定処理』に関してですが、そこまで私の知識が全く追いついておらず、大変恐縮ですが現時点では試すこともできておりません。






hata
投稿日時: 2017/9/12 9:39
対応状況: −−−
長老
登録日: 2015/8/3
居住地: 宮城県(2017/09末引退)
投稿: 156
Re: 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい
twigだけでなんとかするならこれでいいと思います。
※以下、パッチのイメージです(行頭+が追加行)

$ diff -u src/Eccube/Resource/template/default/Product/detail.twig app/template/default/Product/detail.twig
--- src/Eccube/Resource/template/default/Product/detail.twig    2017-06-13 15:14:29.000000000 +0900
+++ app/template/default/Product/detail.twig   2017-09-12 09:37:26.954413200 +0900
@@ -130,10 +130,12 @@
                 <h3 id="detail_description_box__name" class="item_name">{{ Product.name }}</h3>
                 <div id="detail_description_box__body" class="item_detail">

+                    {% set display_cart = 1 %}
                     {% if Product.ProductTag is not empty %}
                         <!--▼商品タグ-->
                         <div id="product_tag_box" class="product_tag">
                             {% for ProductTag in Product.ProductTag %}
+                                {% if ProductTag.Tag.id == 3 %}{% set display_cart = 0 %}{% endif %}
                                 <span id="product_tag_box__product_tag--{{ ProductTag.Tag.id }}" class="product_tag_list">{{ ProductTag.Tag }}</span>
                             {% endfor %}
                         </div>
@@ -227,9 +229,13 @@

                                 {# カートボタン #}
                                 <div id="detail_cart_box__button_area" class="btn_area">
+                                    {% if display_cart %}
                                     <ul id="detail_cart_box__insert_button" class="row">
                                         <li class="col-xs-12 col-sm-8"><button type="submit" id="add-cart" class="btn btn-primary btn-block prevention-btn prevention-mask">カートに入れる</button></li>
                                     </ul>
+                                    {% else %}
+                                    お問い合わせ用のメッセージ
+                                    {% endif %}
                                     {#Favorite product button#}
                                     {% if BaseInfo.option_favorite_product == 1 %}
                                         <ul id="detail_cart_box__favorite_button" class="row">
qahrk
投稿日時: 2017/9/16 21:40
対応状況: 解決済
半人前
登録日: 2017/9/3
居住地:
投稿: 12
Re: 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい
hata さま

ご教授いただきまして、誠にありがとうございます。こちら、お陰様で御指南いただきました方法にて解決いたしました!

また、お礼が遅くなりまして大変失礼いたしました。まだまだ知識、経験が不足なため、書き換えがすんなり行かず、多少時間がかかっておりました。大変恐縮です。

また何かお伺いさせていただきたい時にはどうぞ宜しくお願い申し上げます。
ペコリ
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.