バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
brass
投稿日時: 2022/5/2 16:53
対応状況: 解決済
新米
登録日: 2019/8/30
居住地:
投稿: 9
商品詳細ページの品切れ中表示について
▼テンプレート
[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
居住地:
投稿: 53
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
居住地:
投稿: 9
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
居住地:
投稿: 53
Re: 商品詳細ページの品切れ中表示について
なるほどformごとね、その方がよりスマートですね。私ならこちらを採用します。
brass
投稿日時: 2022/5/3 13:39
対応状況: 解決済
新米
登録日: 2019/8/30
居住地:
投稿: 9
Re: 商品詳細ページの品切れ中表示について
ありがとうございます!
おかげでスッキリしました。
では、解決済みとして閉めさせていただきます
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン



統計情報

総メンバー数は74,625名です
総投稿数は104,054件です

投稿数ランキング

1
seasoft
7333
2
468
3217
3
AMUAMU
2712
4
nanasess
2202
5
umebius
2074
6
yuh
1664
7
red
1498
8
h_tanaka
1188
9
tsuji
942
10
fukap
907
11
shutta
835
12
tao_s
794
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.