Liquid Snippets by ALSEL
📄 ページテンプレート中級

商品詳細ページの基本レイアウト

商品画像ギャラリー、タイトル、ベンダー・タイプ情報、バリアント選択ドロップダウン、説明文を含む商品詳細ページの基本構成。バリアント選択時に価格と在庫状態をリアルタイム更新する。

用途
Shopify テーマの商品詳細ページ(product page)で、基本的な商品情報と購入フローを実装するときに使用。古い Prototype.js ベースだが、レイアウト設計の参考になる。
設置場所
templates/product.liquid に配置するか、この構造を参考に現在のテーマの product テンプレートに組み込む。バリアント選択のコールバック関数は、モダンな Liquid 構文(Shopify.OptionSelectors)に置き換えるか、カスタム JavaScript で書き直す。
注意点
このコードは Prototype.js(古い JavaScript ライブラリ)に依存しているため、現在のテーマでは動作しない可能性が高い。バリアント選択ロジックは Shopify の Theme App Extension または Shopify Functions で実装するか、Vanilla JS / Alpine.js での書き換えが必要。product_img_url フィルターは廃止になっているため、image_url フィルター(Online Store 2.0 以降)に置き換える必要がある。
タグ:productvariantimage-gallerylegacyjavascript

コード

69 行 / liquid
<div id="productpage">

  <div id="productimages"><div id="productimages-top"><div id="productimages-bottom">
    {% for image in product.images %}
      {% if forloop.first %}
        <a href="{{ image | product_img_url: 'large' }}" class="productimage" rel="lightbox">
          <img src="{{ image | product_img_url: 'medium'}}" alt="{{product.title | escape }}" />
        </a>
      {% else %}
        <a href="{{ image | product_img_url: 'large' }}" class="productimage-small" rel="lightbox">
          <img src="{{ image | product_img_url: 'small'}}" alt="{{product.title | escape }}" />
        </a>
      {% endif %}
    {% endfor %}
  </div></div></div>

  <h2>{{ product.title }}</h2>

  <ul id="details" class="hlist">
    <li>Vendor: {{ product.vendor | link_to_vendor }}</li>
    <li>Type: {{ product.type | link_to_type }}</li>
  </ul>

  <small>{{ product.price_min | money }}{% if product.price_varies %} - {{ product.price_max | money }}{% endif %}</small>

  <div id="variant-add">
    <form action="/cart/add" method="post">

      <select id="variant-select" name="id" class="product-info-options">
        {% for variant in product.variants %}
          <option value="{{ variant.id }}">{{ variant.title }} - {{ variant.price | money }}</option>
        {% endfor %}
      </select>

      <div id="price-field" class="price"></div>

    <div style="text-align:center;"><input type="image" name="add" value="Add to Cart" id="add" src="{{ 'addtocart.gif' | asset_url }}" /></div>
    </form>
  </div>

  <div class="description textile">
    {{ product.description }}
  </div>
</div>

<script type="text/javascript">
<!--
  // prototype callback for multi variants dropdown selector
  var selectCallback = function(variant, selector) {
    if (variant && variant.available == true) {
      // selected a valid variant
      $('add').removeClassName('disabled'); // remove unavailable class from add-to-cart button
      $('add').disabled = false;           // reenable add-to-cart button
      $('price-field').innerHTML = Shopify.formatMoney(variant.price, "{{shop.money_with_currency_format}}");  // update price field
    } else {
      // variant doesn't exist
      $('add').addClassName('disabled');      // set add-to-cart button to unavailable class
      $('add').disabled = true;              // disable add-to-cart button
      $('price-field').innerHTML = (variant) ? "Sold Out" : "Unavailable"; // update price-field message
    }
  };

  // initialize multi selector for product
  Event.observe(document, 'dom:loaded', function() {
    new Shopify.OptionSelectors("variant-select", { product: {{ product | json }}, onVariantSelected: selectCallback });
  });
-->
</script>

出典・ライセンス

License:
MIT

このコードは Shopify 著作の MIT ライセンスソースです。 原本の著作権は Shopify が保有します。日本語訳は ALSEL によるものです。

関連項目

📄 ページテンプレート初級

ページテンプレート

Shopify の汎用ページテンプレート。ページのタイトルと本文コンテンツを Shopify 管理画面から取得して表示する基本的な構造。

📁 liquid·MIT·5
📄 ページテンプレート初級

リダイレクト

ヘッドレステーマで Shopify ストアフロントへのリダイレクト機能を提供するセクション。管理画面に「リダイレクト」という名称で登場し、ページから別 URL への誘導を実装する基盤となる。

📁 shopify-headless-theme·MIT·7
📄 ページテンプレート初級

トップページの基本テンプレート

Shopify Liquid の最小限のテンプレート例。HTML に日付変数を埋め込み、商品ページへのリンクを配置する基本構造を示す。

📁 liquid·MIT·7
📄 ページテンプレート初級

固定ページのテンプレート

Shopify 管理画面で作成した固定ページ(利用規約、プライバシーポリシーなど)を表示するテンプレート。ページタイトルと本文コンテンツを描画する。

📁 mcliquid-theme·MIT·8
📄 ページテンプレート初級

ページの基本テンプレート

固定ページ(About など)の基本レイアウト。ページタイトルとコンテンツを HTML の article 要素でマークアップし、管理画面で編集したテキストを表示する。

📁 liquid·MIT·9
📄 ページテンプレート初級

固定ページのテンプレート

固定ページ(ポリシー、会社概要、利用規約など)の基本レイアウト。ページタイトルと本文を中央揃えで表示する。

📁 ks-bootshop·MIT·10