テーマ仕様書
shop
購入画面
サンクスクロスセル★

サンクスクロスセル(部分テンプレート)

サンクスオファー画面で利用するサンクスクロスセル機能用部分テンプレートです。
サンクスオファー画面で include して利用します。(サンクスオファー画面以外では利用できません)

テーマ管理のファイルパス

ec_force/shop/orders/_form_cv_xsell.html.liquid
ec_force/shop/orders/_form_cv_xsell.html+smartphone.liquid

必要なコンポーネント

任意とあるもの以外はシステム上必要なコンポーネントとなりますので、必ず使用するようにしてください。

<div id="cv-xsells-view">
  {% if order.show_cv_xsell_form_at_shop? == true %}
    <form id="form_cv_xsell" action="/shop/order/cv_upsell" method="post">
      <input name="_method" type="hidden" value="put">
      <input name="authenticity_token" type="hidden" value="form_authenticity_token">
      <input name="order[take_cv_xsell_offer]" type="hidden" value="1">
      <input name="preview_order[offer_name]" type="hidden" value="cv_xsell">
      <div id="view-payment-information">
        <input id="payment_method_id" name="preview_order[payment_attributes][payment_method_id]" type="hidden" value="{{ order.payment.payment_method_id }}">
        <input id="payment_times" name="preview_order[payment_attributes][payment_times]" type="hidden" value="{{ order.payment.payment_times }}">
      </div>
      <div id="view-shipping-carrier">
        <input id="shipping_carrier_id" name="preview_order[shipping_carrier_id]" type="hidden" value="{{ order.shipping_carrier_id }}">
      </div>
      <div id="xsell-select-view" class="default-hide">
        {% for cv_xsell_product in order.cv_xsell_active_products %}
          <div>
            <div id="cv-xsell-product-{{ cv_xsell_product.id }}">
              {% assign thumbnail_url = 'missing' | image_url %}
              {% if cv_xsell_product.master.thumbnails.size > 0 and cv_xsell_product.master.thumbnails.first.url != nil %}
                {% assign thumbnail_url = cv_xsell_product.master.thumbnails.first.url %}
              {% elsif cv_xsell_product.thumbnail != nil %}
                {% assign thumbnail_url = cv_xsell_product.thumbnail.url %}
              {% endif %}
              
              <!-- 商品のメイン画像URLを取得 -->
              {% assign product_thumbnail_url = 'missing' | image_url %}
              {% if cv_xsell_product.thumbnail %}
                {% assign product_thumbnail_url = cv_xsell_product.thumbnail.url %}
              {% endif %}
              <img class="cv_xsell_product_img" src="{{ thumbnail_url }}" data-product-id="{{ cv_xsell_product.id }}"></img>
              {{ cv_xsell_product.name | truncate: 35 }}
              <!-- 商品バッジ(任意) -->
              {% if campaign_badge_flg_offer_hash[cv_xsell_product.id] %}
                <!-- キャンペーンバッジ(任意) -->
                {% assign badges = campaign_badge_flg_offer_hash[cv_xsell_product.id] | liquid_render_badges %}
                {% for render_badge in badges %}
                  {{ render_badge | hash: 'value' }}
                {% endfor %}
              {% endif %}
              販売価格:{{ cv_xsell_product.initial_price | number_to_currency }}(税抜)
              {{ cv_xsell_product.description | truncate: 40 }}
              <a class="cv_xsell_variant_detail" data-product-id="{{ cv_xsell_product.id }}">
                詳細を見る
              </a>
              {% assign delivery_group_names = '' %}
              {% for delivery_group_name in cv_xsell_product.delivery_group_names %}
                {% assign delivery_group_names = delivery_group_names | append: delivery_group_name | append: "," %}
              {% endfor %}
              {% assign concurrent_purchase_group_names = '' %}
              <!-- 「バッジ表示名」を表示したい場合、cv_xsell_product.concurrent_purchase_group_names を cv_xsell_product.concurrent_purchase_badge_names に修正してください。 -->
              {% for concurrent_purchase_group_name in cv_xsell_product.concurrent_purchase_group_names %}
                {% assign concurrent_purchase_group_names = concurrent_purchase_group_names | append: concurrent_purchase_group_name | append: "," %}
              {% endfor %}
              {% assign badges = campaign_badge_flg_offer_hash[cv_xsell_product.id] | liquid_render_badges %}
              {% assign campaign_badge_types = '' %}
              {% assign campaign_badge_values = '' %}
              {% for render_badge in badges %}
                {% assign type = render_badge | hash: 'type' %}
                {% assign value = render_badge | hash: 'value' %}
                {% if campaign_badge_types == '' %}
                  {% assign campaign_badge_types = campaign_badge_types | append: type %}
                  {% assign campaign_badge_values = campaign_badge_values | append: value %}
                {% else %}
                  {% assign campaign_badge_types = campaign_badge_types | append: ',' | append: type %}
                  {% assign campaign_badge_values = campaign_badge_values | append: ',' | append: value %}
                {% endif %}
              {% endfor %}
              <div>
                <input type="hidden" name="product-name" value="{{ cv_xsell_product.name | escape }}">
                <input type="hidden" name="product_description" value="{{ cv_xsell_product.parsed_description | simple_format }}">
                <input type="hidden" name="is_pre_order" value="{% if enabled_pre_order and cv_xsell_product.master.pre_order.is_pre_order? %}1{% else %}0{% endif %}">
                <input type="hidden" name="pre_ordered_display_mark" value="{% if pre_order_settings.display_mark %}1{% else %}0{% endif %}">
                <input type="hidden" name="pre_ordered_delivery_description_modal" value="{{ cv_xsell_product.master.pre_order.pre_ordered_delivery_description | escape }}">
                <input type="hidden" name="pre_ordered_notes" value="{{ pre_order_settings.notes | escape }}">
                <input type="hidden" name="valid_pre_order" value="{% if cv_xsell_product.master.pre_order.within_pre_order_period? == false %}0{% endif %}1">
                <input type="hidden" name="delivery_group_names" value="{{ delivery_group_names }} ">
                <input type="hidden" name="concurrent_purchase_group_names" value="{{ concurrent_purchase_group_names }} ">
                <input type="hidden" name="campaign_badges_type" value="{{ campaign_badge_types }}">
                <input type="hidden" name="campaign_badges_value" value="{{ campaign_badge_values }}">
                <input type="hidden" name="list-price" value="{{ cv_xsell_product.master.list_price | number_to_currency }}">
                <input type="hidden" name="list-price-include-tax" value="(税込価格 {{ cv_xsell_product.master.list_price_include_tax | number_to_currency }})">
                <input type="hidden" name="sales-price" value="{{ cv_xsell_product.initial_price | number_to_currency }}">
                <input type="hidden" name="sales-price-include-tax" value="(税込価格 {{ cv_xsell_product.initial_price_include_tax | number_to_currency }})">
                {% assign maker_name = '-' %}
                {% assign maker_url = '-' %}
                {% if cv_xsell_product.maker != nil %}
                  {% if cv_xsell_product.maker.name != nil %}
                    {% assign maker_name = cv_xsell_product.maker.name %}
                  {% endif %}
                  {% if cv_xsell_product.maker.url != nil %}
                    {% assign maker_url = cv_xsell_product.maker.url %}
                  {% endif %}
                {% endif %}
                <input type="hidden" name="maker-name" value="{{ maker_name }}">
                <input type="hidden" name="maker-url" value="{{ maker_url }}">
                {% assign categories = '' %}
                {% for category in cv_xsell_product.product_categories %}
                  {% if category.product_category_visibility %}
                    {% unless categories == '' %}
                      {% assign categories = categories | append: ', ' %}
                    {% endunless %}
                    {% assign categories = categories | append: category.name %}
                  {% endif %}
                {% endfor %}
                <input type="hidden" name="category" value="{{ categories }}">
                <input type="hidden" name="variant_description" value="{{ cv_xsell_product.master.parsed_description | simple_format }}">
                {% assign thumbnail_urls = '' %}
                {% for url in cv_xsell_product.master.thumbnail_urls %}
                  {% assign thumbnail_urls = thumbnail_urls | append: url | append: ',' %}
                {% endfor %}
                <input type="hidden" name="variant-image" value="{{ thumbnail_urls }}">
                <input type="hidden" name="main-thumbnail" value="{{ thumbnail_url }}">
                <input type="hidden" name="product-thumbnail" value="{{ product_thumbnail_url }}">
                <input type="hidden" name="tax" value="{{ cv_xsell_product.tax.now_value }}">
              </div>
            </div>
          </div>
        {% endfor %}
      </div>
      <!-- 商品を追加したときの情報 -->
      <div class="form_group_ec">
        <div id="cv-xsell-table" class="default-hide">
          購入した商品に加えて、以下の商品を追加で購入します。
          <!-- 追加商品一覧(table要素から変更不可) -->
          <table>
            <tbody class="cv-xsell-variant-body">
              <!-- 項目名(任意) -->
              <tr>
                <th> 商品名 </th>
                <th> 単価 </th>
                <th> 個数 </th>
                <th> 小計 </th>
                <th></th>
              </tr>
              <!-- 項目(必須) -->
              <tr class="cv-xsell-variant-row default-hide">
                <!-- 商品名(JSで自動挿入) -->
                <td class="variant-name-area"></td>
                <!-- 単価(JSで自動挿入) -->
                <td class="variant-price"></td>
                <!-- 個数(JSで自動挿入) -->
                <td class="variant_quantity"></td>
                <!-- 小計(JSで自動挿入) -->
                <td class="variant-sum"></td>
                <td>
                  <button class="cv_xsell_variant_remove">削除</button>
                </td>
              </tr>
            </tbody>
          </table>
          ※ 各販売価格及び単価、小計は税抜金額です。
        </div>
        <div id="xsell-empty-message" class="default-hide">
          何も追加されていません。
        </div>
      </div>
      <!-- 商品を追加したときの情報 ここまで-->
      <div id="subs-order-settings" class="default-hide">
        お届け商品の設定
        {% include 'ec_force/shop/orders/view_payment_schedule.html' %}
      </div>
      <input id="submit_btn" class="default-hide" type="submit" value="申し込み内容を確認する" data-disable-with="" ></input>
    </form>
  {% else %}
    ご紹介できる商品が見つかりませんでした。
  {% endif %}
  <div id="expired_cv_xsell" class="default-hide">
    有効期限を経過しました。
    受付を終了させていただきます。
  </div>
 
  <div id="converted-items" class="default-hide">
    <div> 先ほど購入した商品</div>
    {% for item in order.order_items %}
      <div id="converted-item-{{ item.id }}">
        {% assign item_thumbnail_url = 'missing' | image_url %}
        {% if item.variant.thumbnails != nil and item.variant.thumbnails.first != nil %}
          {% assign item_thumbnail_url = item.variant.thumbnails.first.url %}
        {% elsif item.product.thumbnail.url != nil %}
          {% assign item_thumbnail_url = item.product.thumbnail.url %}
        {% endif %}
        <img src="{{ item_thumbnail_url }}" ></img>
        {{ item.product.name | truncate: 35 }}
        {{ item.view_selected_sku }}
          個数: {{ item.quantity }}
          販売価格:{{ item.variant.sales_price | number_to_currency }}(税抜)
      </div>
    {% endfor %}
  </div>
 
  <div class="modal-scrollable default-hide" id="product_details_modal">
    <!-- modal_position は CSSを含んでしまっている-->
    <div class="modal modal_position">
      <div class="modal-header">
        <button class="close"> &times;</button>
        <div class="modal-title"></div>
      </div>
      <div class="modal-body">
        <!-- 商品詳細情報(任意) -->
        <img id="main-thumbnail" src=""></img>
        <div id="sub-images-view"></div>
        <span id="product-name"></span>
        <span id="product_description"></span>
        商品詳細
        
        <!-- 商品バッジ(任意) -->
        <div class="display-badge-zone">
        {% if enabled_pre_order %}
          <!-- 予約商品マーク(任意) -->
          <span class="pre-order">
            <span id="pre_ordered_display_mark">予約商品</span>
          </span>
        {% endif %}
          <!-- 配送温度帯マーク(任意) -->
          <span class="delivery-group-badge-zone"></span>
          <!-- 同時購入グループバッジ(任意) -->
          <span class='concurrent-purchase-group-badge-zone'></span>
          <!-- キャンペーンバッジ(任意) -->
          <div class="campaign-badge-zone"></div>
        </div>
 
        <!-- 予約関連情報(任意) -->
        {% if enabled_pre_order %}
          <div class="pre-order">
            <span>お届け予定時期:</span>
            <span id="pre_ordered_delivery_description_modal"></span>
            <span id="pre_ordered_notes"></span>
          </div>
        {% endif %}
 
        <!-- 通常価格(税抜)-->
        通常価格(税抜):<span id="list-price"></span>
        <!-- 通常価格(税込)-->
        通常価格(税込):<span id="list-price-include-tax"></span>
        <!-- 販売価格(税込)-->
        販売価格(税抜):<span id="sales-price"></span>
        <!-- 販売価格(税込)-->
        販売価格(税込):<span id="sales-price-include-tax"></span>
        <!-- メーカー -->
        メーカー:<span id="maker-name"></span>
        <!-- メーカーURL -->
        メーカーURL:<span id="maker-url"></span>
        <!-- カテゴリー -->
        カテゴリー:<span id="category"></span>
        <!-- 説明 -->
        説明:<span id="variant_description"></span>
        <!-- 商品詳細情報(任意)ここまで -->
        <!-- 予約受付期間外時のメッセージ(任意) -->
        {% if enabled_pre_order %}
          <span id="invalid_pre_order_description" class="default-hide">予約受付期間外のためカートに商品を追加できません。</span>
        {% endif %}
        <!-- SKUの絞り込み -->
        <form>
          <input id="selected-variant-id" type="hidden" name="selected-variant-id" value=""></input>
          {% authenticity_token_tag %}
          <div>
          <div id="variant-option-types" class="default-hide"></div>
            数量
            <select id="quantity-area" name="quantity-area">
              {% for i in [*1..10] %}
                <option value="{{ i }}" {% if i == 1 %} selected {% endif %}>{{ i }}個</option>
              {% endfor %}
            </select>
            <button id="cv_xsell_variant_add"> 商品を選択 </button>
          </div>
        </form>
        <!-- SKUの絞り込み ここまで -->
      </div>
    </div>
  </div>
</div>