概要

Produce_1.mp4

スクリーンショット 2023-05-29 12.48.19.png

設定方法

スクリーンショット 2023-05-29 12.48.57.png

{%- unless product.has_only_default_variant -%}
  <div id="selected-variant-info">
    <h3>選択中の商品(バリエーション)</h3>
    <p></p>
  </div>
  <script>
  (()=>{
    // デフォルトで生成されている↑のvariants jsonの中身を取得
    const variationData = JSON.parse(document.querySelector('variant-radios [type="application/json"], variant-selects [type="application/json"]').textContent);

    // 表示中のバリアントIDを取得
    const getCurrentVariantIdFromUrl = () => {
      const defaultVariantId = {{ product.first_available_variant.id }};
      const params = new URLSearchParams(window.location.search);
      const variantId = params.get('variant');
      return variantId ? parseInt(variantId) : defaultVariantId;
    }

    // 表示中のバリアントIDの内容を表示
    const setSelectedVariantInfo = () => {
      const currentVariant = variationData.find((variant) => variant.id === getCurrentVariantIdFromUrl());
      let selectedVariantInfoHTML = '';
      if (currentVariant.option1) {
        selectedVariantInfoHTML += `{{ product.options_with_values[0].name }}:` + currentVariant.option1;
      }
      if (currentVariant.option2) {
        selectedVariantInfoHTML += `<br>{{ product.options_with_values[1].name }}:` + currentVariant.option2;
      }
      if (currentVariant.option3) {
        selectedVariantInfoHTML += `<br>{{ product.options_with_values[2].name }}:` + currentVariant.option3;
      }
      const selectedVariantInfo = document.querySelector('#selected-variant-info p');
      selectedVariantInfo.innerHTML = selectedVariantInfoHTML;
    }
    window.addEventListener('DOMContentLoaded', (event) => {
      document.querySelectorAll('variant-radios input[type="radio"], variant-selects select')
      .forEach(input => input.addEventListener('change', () => {
        setTimeout(setSelectedVariantInfo, 0);
      }));
      setSelectedVariantInfo();
    });
  })();
  </script>
  <style>
    #selected-variant-info {
      margin: 1.5em 0;
    }
    #selected-variant-info h3 {
      margin: 0;
      font-size: 12px;
    }
    #selected-variant-info p {
      margin: 0.5em 0 0;
      background-color: #EEE;
      padding: 10px;
      font-weight: 600;
      font-size: 13px;
    }
  </style>
{%- endunless -%}