バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

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

サイト内検索

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

フロント機能

新規スレッドを追加する

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

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

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

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


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

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





qahrk
投稿日時: 2017/9/10 19:19
対応状況: −−−
新米
登録日: 2017/9/3
居住地:
投稿: 4
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
居住地:
投稿: 712
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
居住地:
投稿: 4
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
居住地: 宮城県
投稿: 154
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
居住地:
投稿: 4
Re: 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい
hata さま

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

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

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

 



ログイン


EC-CUBEペイメント

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

統計情報

総メンバー数は20,136名です
総投稿数は82,934件です

投稿数ランキング

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


ネットショップの壺

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

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