バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品詳細ページの品切れ中表示について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
brass
投稿日時: 2022/5/2 16:53
対応状況: 解決済
半人前
登録日: 2019/8/30
居住地:
投稿: 11
商品詳細ページの品切れ中表示について
▼テンプレート
[EC-CUBE] 4.1.1
[レンタルサーバ] さくらのレンタルサーバー
[PHP] 7.4.28
[データベース] MySQL 5.7.37
[導入プラグインの有無] WEB API, Coupon
[カスタマイズの有無] 販売開始、販売終了日時の設定機能
[現象]
現在、販売開始 / 終了日時の設定機能とそれに伴った商品一覧と商品詳細のカートボタンの表示変更を実装しようとしています。

機能自体の実装と商品一覧のカートボタンの表示までは済んでおり、あとは商品詳細のカートボタンを変更するところまで来ています。
Formのstock_find部分で条件分岐をandで追加したのですが、フロントを見てみると
「ただいま品切れ中」のボタンの直下に
Quantity(日本語ではなく英語表記)
Class1(ダミー商品 id: 1だとフレーバー)
Class2(ダミー商品 id: 1だとサイズ)
が表示されてしまっています。

クラスが当てられていないため、スタイルも在庫あり状態の時とは異なっています。
この場合は、販売期間の条件分岐を入れる部分を誤っているのでしょうか。

ご教授いただけますと幸いです。


<form action="{{ url('product_add_cart', {id:Product.id}) }}" method="post" id="form1" name="form1">
  {% if Product.stock_find and Product.publish_date < date() < Product.private_date %}
    <div class="ec-productRole__actions">
        {% if form.classcategory_id1 is defined %}
            <div class="ec-select">
                {{ form_widget(form.classcategory_id1) }}
                {{ form_errors(form.classcategory_id1) }}
            </div>
            {% if form.classcategory_id2 is defined %}
                <div class="ec-select">
                    {{ form_widget(form.classcategory_id2) }}
                    {{ form_errors(form.classcategory_id2) }}
                </div>
            {% endif %}
        {% endif %}
        <div class="ec-numberInput"><span>{{ 'common.quantity'|trans }}</span>
            {{ form_widget(form.quantity) }}
            {{ form_errors(form.quantity) }}
        </div>
    </div>
    <div class="ec-productRole__btn">
        <button type="submit" class="ec-blockBtn--action add-cart">
            {{ 'front.product.add_cart'|trans }}
        </button>
    </div>
  {% else %}
    <div class="ec-productRole__btn">
        <button type="button" class="ec-blockBtn--action" disabled="disabled">
            {{ 'front.product.out_of_stock'|trans }}
        </button>
    </div>
  {% endif %}
{{ form_rest(form) }}
</form>
yt1969
投稿日時: 2022/5/2 21:00
対応状況: −−−
一人前
登録日: 2018/3/3
居住地:
投稿: 91
Re: 商品詳細ページの品切れ中表示について
「ただいま品切れ中」のボタン直下の部分は
{{ form_rest(form) }}
で作られているようなので、フォーム側(src/Eccube/Form/Type/AddCartType.php#L96このへん)にも販売期間の条件分岐が必要だと思われます。

あとifブロックの条件式ですが
Product.publish_date < date() < Product.private_date

between的な感じで書きたい気持ちはわからなくもないですが、日付1つずつ検査してandが正解かなと。


brass
投稿日時: 2022/5/3 1:30
対応状況: 開発中
半人前
登録日: 2019/8/30
居住地:
投稿: 11
Re: 商品詳細ページの品切れ中表示について
返信、ご指摘ありがとうございます。

その後継のような記事を見つけ、下記コードのように<form></form>自体を販売期間の条件分岐で囲むことでひとまず自分の実現したい形にはなりました。
このような方法でも問題ないでしょうか?
できるだけいじる箇所は少なくしたいと考えています。

EC-CUBE4で管理画面から高額商品の場合はカートボタンを問い合わせボタンに変更する
{% if date( Product.publish_date ) < date() and date( Product.private_date ) > date() %}
    <form action="{{ url('product_add_cart', {id:Product.id}) }}" method="post" id="form1" name="form1">
        {% if Product.stock_find %}
            <div class="ec-productRole__actions">
                {% if form.classcategory_id1 is defined %}
                    <div class="ec-select">
                        {{ form_widget(form.classcategory_id1) }}
                        {{ form_errors(form.classcategory_id1) }}
                    </div>
                    {% if form.classcategory_id2 is defined %}
                        <div class="ec-select">
                            {{ form_widget(form.classcategory_id2) }}
                            {{ form_errors(form.classcategory_id2) }}
                        </div>
                    {% endif %}
                {% endif %}
                <div class="ec-numberInput"><span>{{ 'common.quantity'|trans }}</span>
                    {{ form_widget(form.quantity) }}
                    {{ form_errors(form.quantity) }}
                </div>
            </div>
            <div class="ec-productRole__btn">
                <button type="submit" class="ec-blockBtn--action add-cart">
                    {{ 'front.product.add_cart'|trans }}
                </button>
            </div>
        {% else %}
            <div class="ec-productRole__btn">
                <button type="button" class="ec-blockBtn--action" disabled="disabled">
                    {{ 'front.product.out_of_stock'|trans }}
                </button>
            </div>
        {% endif %}
            {{ form_rest(form) }}
    </form>
{% else %}
            <div class="ec-productRole__btn">
            <button type="button" class="ec-blockBtn--action" disabled="disabled">
                {{ Product.publish_date|date('Y/m/d h:m') }} ~ {{ Product.private_date|date('Y/m/d h:m') }}
            </button>
        </div>
{% endif %}
yt1969
投稿日時: 2022/5/3 13:10
対応状況: −−−
一人前
登録日: 2018/3/3
居住地:
投稿: 91
Re: 商品詳細ページの品切れ中表示について
なるほどformごとね、その方がよりスマートですね。私ならこちらを採用します。
brass
投稿日時: 2022/5/3 13:39
対応状況: 解決済
半人前
登録日: 2019/8/30
居住地:
投稿: 11
Re: 商品詳細ページの品切れ中表示について
ありがとうございます!
おかげでスッキリしました。
では、解決済みとして閉めさせていただきます
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は94,418名です
総投稿数は111,279件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2323
5
umebius
2085
6
yuh
1877
7
h_tanaka
1782
8
red
1574
9
mcontact
1494
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
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.