商品ページカスタマイズ①独自セクションの作成 | SkillhubAI(スキルハブエーアイ)

商品ページカスタマイズ①独自セクションの作成

file

プレビュー用の商品が登録できたら、商品ページをカスタマイズしてきましょう。 商品の説明とメタフィールドを、商品イメージや購入ボタンの下に表示できるようにテーマを変更します。

制作のイメージ

Shopifyテーマ“Dawn”に用意されている商品情報セクション(main-product.liquid)は、商品イメージ+ユーザーが設定可能なブロック、という2ブロックの構成です。

file

この構成で1つのセクションの中で「指定した項目(ブロック)だけ、2カラムレイアウトの外に出す」という設定を行うのは大変です。

ですので、セクションごと新しく作ってしまいましょう。 新しいセクションを今ある2カラムの“商品情報”セクションの下に配置して、商品説明など広く表示させたいものを選択するイメージです。

file

1.新規セクション/ブロックを作成

1-1.新規セクションファイル作成

新しく、商品説明用のセクションを作っていきます。

コード編集画面 > 新しいセクションを追加する をクリック。 「main-product-custom.liquid」を作成してください。

file

まずは、schema内で下記の3つを設定しましょう。

1.nameの値を「商品説明」に打ち替えて、セクション名を変更する 2.テーマのカスタマイズ画面で使えるよう、presets属性を追加する 3.商品ページでのみ使えるよう、templates属性を追加する

main-product-custom.liquid

{% schema %}
  {
    "name": "商品説明",
    "settings": [],
    "presets" : [
      {
        "name" : "商品説明"
      }
    ],
    "templates" : [
      "product"
    ]
  }
{% endschema %}

※templates属性は、このセクションを呼び出せるテンプレートを制限しています。

Shopify公式ドキュメント / Section Schema
https://shopify.dev/themes/architecture/sections/section-schema#templates

コードを上書き保存し、テーマのカスタマイズ画面を開いてください。 「セクションを追加」から、作ったセクションを選択可能か確認します。

file

商品説明セクションが表示されていればOKです。 コード編集画面に戻って、セクションファイルの中身を書いていきましょう。

1-2.基本のブロック設定

テーマカスタマイズ画面で、ブロックとして商品説明やメタフィールドを追加・削除できるように設定します。下記2箇所を追加し、ブロックを作りましょう。

  • ブロックを取り出すためのfor文と、分岐を作るcase文
  • schema内にblocksプロパティを追加

main-product-custom.liquid

{%- for block in section.blocks -%}
  {%- case block.type -%}

  {%- endcase -%}
{%- endfor -%}

{% schema %}
  {
    "name": "商品説明",
    "blocks": [

        ],
    "presets...以下略

1-3.商品説明のブロックを追加

商品の“説明”を呼び出すブロックは、既存の商品情報セクション(main-product.liquid)にもあります。イチから書くのは面倒なので、使えるコードをもらいましょう。

shopify.devでproductオブジェクトのプロパティ一覧を見ると、商品の説明はdescriptionもしくはcontentプロパティで呼び出せることがわかります。

出典:https://shopify.dev/api/liquid/objects/product

main-product.liquidを開きます。 以下のショートカットキーで、検索機能を立ち上げください。

  • Win:Ctrl + F
  • Mac:command + F

main-product.liquid内で「description」を検索してみましょう。 ファイル内で、いくつかヒットする箇所があるはずです。

file

まず、商品の説明を表示する部分。 {%- when 'description' -%} ~ {%- endif -%} までをコピーしてください。

file

コピーしたコードをmain-product-custom.liquidの、case文の中に貼り付けます。

file

再び、main-product.liquidの方で「description」を検索します。 Nextボタンで進めていくと、1261行目あたりにブロックの設定があります。 { から } までをコピーしてください。

file

コピーしたコードをmain-product-custom.liquidの、 blocks: [ ]の中に貼り付けます。

file

上書き保存してください。

1-4.メタフィールド表示用のブロック作成

次に、メタフィールドで設定した原材料名などを表示するブロックを作ります。

ダイレクトにLiquidに書くことも出来ますが、今回はカスタマイズ画面の「動的ソースを挿入」からメタフィールドを呼び出す形にします。これは、ストア運営者が必要に応じてメタフィールドを増減した際、カスタマイズ画面から自分で設定できるようにするためです。

では、main-product-custom.liquidのschema内で、2つ目のブロックを設定しましょう。 タイトル、メタフィールドに登録した情報の2つを呼び出せるようにします。

main-product-custom.liquid

{% schema %}
  {
    "name": "商品説明",
    "settings": [],
    "blocks": [
      {
        "type": "description",
        "name": "t:sections.main-product.blocks.description.name",
        "limit": 1
      },
      {
        "type" : "textblock",
        "name" : "商品の追加情報",
        "settings" : [
          {
            "type": "text",
            "id": "heading",
            "label": "見出し"
          },
          {
            "type": "richtext",
            "id": "text",
            "label": "テキスト"
          }
        ]
      }
    ],
    "presets...以下略

case文の中で、作成したブロックを表示できるよう記述します。

main-product-custom.liquid

{%- case block.type -%}
  {%- when 'description' -%}
    {%- if product.description != blank -%}
      <div class="product__description rte quick-add-hidden">
        {{ product.description }}
      </div>
    {%- endif -%}

  {%- when 'textblock' -%}
    <p>{{ block.settings.heading }}</p>
    <div>{{ block.settings.text }}</div>
{%- endcase -%}

コードを上書き保存してください。

2.カスタマイズ画面から設定

カスタマイズ画面から、表示するセクションとブロックを設定していきます。

2-1.商品説明セクションを設定

アイコンを押して、テーマをカスタマイズを選択。

file

上部のテンプレート選択で 商品 > デフォルトの商品 を開きます。 左サイドバーの「セクションを追加」から、自作した商品説明セクションを追加。

file

商品説明セクションを、商品情報の下に配置してください。

商品説明セクションの「ブロック追加」を使います。 まずは、商品説明を追加。

file

次に、商品の追加情報ブロックを追加します。 見出しには、原材料名と入力してください。 テキストの部分は、動的ソースを挿入 > 原材料名を選びます。

file file

再び、ブロックを追加 > 商品の追加情報 を選択。 この繰り返して、他のメタフィールドの情報も表示させていきましょう。

概要は“商品情報”の方で表示するので、ここでは追加しないでください。

file

見た目は後ほど調整します。そのまま進めてください。

2-2.商品情報セクションの調整

次に、既存の商品情報セクションを調整しましょう。 商品説明~Care Instructionsまでは必要ないので、非表示化します。

file

商品情報セクションのブロックを追加 > カスタムLiquid を選びます。 メタフィールド“概要”をLiquidで呼び出しましょう。

<!-- 概要を表示 -->
{{product.metafields.custom.description}}

file

2-3.使わないセクションは非表示に

テキスト付き画像、マルチカラムのセクションは使いません。 セクションごと非表示に設定しましょう。

file

なお、おすすめ商品は、売上に繋がりそうなので残しました。