ワイズリマインダー

EC-CUBEで特定の商品が含まれていたら支払い方法を変更する

ある商品がカートに含まれていたら
支払い方法を変更する方法

商品別に支払い方法を変えられるプラグインが販売されているので
66,000円出せる方はそちらの方が簡単です。

 

今回は商品タグを利用します。
とある商品タグが含まれている場合、
カートで表示する支払い方法を任意にカスタマイズします。

具体的には、「一点物」のタグが設定されている商品が含まれている場合、
他の決済方法を非表示にして「銀行振込(りそな銀行)」のみ表示させます。

 

設定 > 店舗設定 > 支払い方法設定は、このようになっている

 

商品管理 > タグ管理は、このようになっている

 

ここで必要なのか各設定にあるID
銀行振込(りそな銀行)の場合は9
一点物の場合は7
IDが変わらなければ表記上の文字は途中で変更しても問題なし。

 

今回カスタマイズするファイルは、
app/template/default/Shopping/index.twig
ページ管理で言うところの「商品購入」

 

まずはblock main直下に変数を定義します

{% block main %}
 {% set isBankOnly = false %}

 

カートに入っている商品に該当するタグが含まれているかチェックします
for orderItem in shipping.productOrderItems ~ endfor 内に追記します

{% for orderItem in shipping.productOrderItems %}
 // ここから
  {% if orderItem.product.productTag is not null %}
  {% for productTags in orderItem.product.productTag %}
   {% if productTags.Tag.id == 7 %}
    {% set isBankOnly = true %}
   {% endif %}
  {% endfor %}
 {% endif %}
 // ここまで

  // 中略
{% endfor %}

 

表示させる支払い方法を制御します
for key, child in form.Payment ~ endfor 内を変更します

{% for key, child in form.Payment %}
    {% set Payment = form.Payment.vars.choices[key].data %}
  // タグID7の有無によって支払い方法ID9のみ・以外を切り替えます
    {% if (isBankOnly == true and Payment.id == 9) or (isBankOnly != true and Payment.id != 9) %}
        <div style="display: block;">
            {{ form_widget(child, { 'attr': { 'data-trigger': 'change' }}) }}
            {% if Payment.payment_image is not null %}
                <p><img src="{{ asset(Payment.payment_image, 'save_image') }}"></p>
            {% endif %}
        </div>
  // 閉じ忘れ注意
    {% endif %}
{% endfor %}

 

index.twigをアップロード、またはページ管理で変更した後は
コンテンツ管理 > キャッシュ管理 で、キャッシュを削除すると反映されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

検索

最近のコメント

最近の投稿

タグ

フィード配信

アーカイブ

外部リンク