質問 > フロント機能 > 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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に渡して判定する方法もあるかと思います。
|
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だけでなんとかするならこれでいいと思います。
※以下、パッチのイメージです(行頭+が追加行)
|
qahrk |
投稿日時: 2017/9/16 21:40
対応状況: 解決済
|
半人前 登録日: 2017/9/3 居住地: 投稿: 12 |
Re: 商品詳細ページで特定の商品のみカートを非表示にしてお問い合わせ用のメッセージを表示させたい hata さま
ご教授いただきまして、誠にありがとうございます。こちら、お陰様で御指南いただきました方法にて解決いたしました! また、お礼が遅くなりまして大変失礼いたしました。まだまだ知識、経験が不足なため、書き換えがすんなり行かず、多少時間がかかっておりました。大変恐縮です。 また何かお伺いさせていただきたい時にはどうぞ宜しくお願い申し上げます。 ペコリ |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |