#07 製品ページのカスタマイズ方法
product.liquid にある元々のコードを削除する
商品名と商品画像を呼び出すLiquidを追加する
商品名と商品画像の情報を取得して、変数に代入するコードを追加します。
{% assign current_product = product.selected_or_first_available_varian %}
{% assign product_image = current_product.featured_image | default: product.featured_image %}
商品名と商品画像の変数を作成する
①商品名の変数 assign current_product
②商品画像の変数 assign product_image
変数を定義したコードの下にBootstrapのHTMLコードと
Liquidコードを記述していきます。
<div class="container">
<div class="row">
<div class="col-md-6 col-12">
<img class="img-fluid" src="{{ product_image | img_url: 'large' }}" alt="{{ product_image.alt }}" id="ProductMainImage">
{% for image in product.images %}
<img src="{{ image.src | img_url: 'medium' }}" alt="{{ image.alt }}">
{% endfor %}
</div>
<div class="col-md-6 col-12">
<h1>{{ product.title }}</h1>
<p>{{ current_product.price | money_with_currency }}</p>
{% form 'product', product, class:"product-form", id:"AddTpCartForm" %}
<div class="mb-3">
<select name="id" id="productSelect" class="form-select">
{% for variant in product.variants %}
{% if variant.available %}
<option value="{{ variant.id }}">
{{ variant.title }}
</option>
{% else %}
<option value="{{ variant.id }}" disabled="disabled">
{{ variant.title }}
</option>
{% endif %}
{% endfor %}
</select>
</div>
<div class="mb-3">
<input type="number" class="form-control" name="quantity" id="Quantity" value="1" min="1">
</div>
<button type="submit" name="add" id="AddToCard" class="btn btn-secondary btn-lg w-100 rounded-0">
カートに入れる
</button>
{{ form | payment_button }}
{% endform %}
</div>
</div>
</div>
商品画像・タイトル・価格を呼び出すLiquidを追加する
商品画像と画像alt をLiquidで呼び出す
商品画像が複数枚登録されていれば表示する
商品タイトルと商品価格を表示する
商品オプションをセレクトボタンで選択できるようにフォームタグを呼び出すLiquidを追加する
LiquidでHTMLのフォームを作る場合、
特定のエンドポイントにフォームを送信するために、
必要な入力要素と一緒にHTMLフォーム要素を生成します。
例えば、フォームタイプがproductの場合
<input type="hidden" name="form_type" value="product" />
のようなHTMLがタグが生成されます。
フォームが機能するためには、
フォームタイプをエンドポイントに送信する必要があります。
製品ページでフォームを作るので、
フォームタイプは product に設定します。
しかし、使用可能なフォームタイプは全部で 13種類あります。
フォームのタグを追加するLiquid
フォームタイプの13つのタイプ
続きのコードの解説です。
商品のオプションの在庫があれば、セレクトボタンで選択可能にして、在庫がない場合はグレーアウトして表示だけして選択できないようにする
今すぐ購入ボタンを表示する
もし、今すぐ購入ボタンを表示したくない場合、
ダイナミックセクションに登録させることで、今すぐ購入ボタンを設置したりしなかったりできます。
今すぐ購入ボタンをダイナミックセクションにする
セクションに今すぐ購入ボタンのコードを追加します。
管理画面から今すぐ購入ボタンを追加・削除を設定できるようにする
③ 「product.liquid」にコードを追加する
「product.liquid」に以下のコードを追加します。
{% section 'product-template' %}
④「product-template.liquid」にスキーマのJSONを追加する
ファイルの一番下に、以下のJSONコードを追加します。
{% schema %}
{
"name": "Products",
"settings": [
{
"type": "checkbox",
"id": "dynamic_buttons_checkbox",
"label": "ダイナミックボタンを表示する",
"default": false
}
]
}
{% endschema %}
⑤「product-template.liquid」を編集する
管理画面のダイナミックボタンを表示するのチェックがあれば、ダイナミックボタンが表示されるための条件文を追加します。
{{ form | payment_button }} 付近にLiquidコードを追加します。
{% if section.settings.dynamic_buttons_checkbox == true %}
{{ form | payment_button }}
{% endif %}
もし、ダイナミックボタンを表示するのチェックがあれば、ボタンを表示する
この記事が気に入ったらサポートをしてみませんか?