はじめに

Shopifyのテーマカスタマイズの使いやすさは特筆すべきものだと感じます。
より楽しく開発ができるよう、セクションやブロック設定で使用できるschemaのtypeを、自分なりに分類してまとめました。

基本のプロパティ

プロパティ説明
type設定の種類 (※必須)
id一意のユニークな値 (※必須)
label管理画面に表示される設定の名前 (※表示系以外では必須)
default設定のデフォルト値
info管理画面に表示される設定の説明文

補足:カスタマイズ画面で項目名を動的に反映させるには?

idプロパティの値に title と指定すると、カスタマイズ画面で入力したテキストが項目名に反映されます。

カスタマイズ画面

paragraph – 段落

headerとは別に文章を設置できます。

{
  "type": "paragraph", //必須
  "content": "設定の説明や補足事項などが入ります。"
}

テキスト系

text – テキスト

1行テキストを設定します。

オプションプロパティ説明
placeholderプレースホルダー値が設定できます。
※settings_schema.json での定義が必要。
{
 "type": "text", //必須
 "id": "id_text", //必須
 "label": "テキストの入力欄です", //必須
 "default": "デフォルトのテキスト",
 "info": "説明文です",
 "placeholder": {
    "ja": "タイトル",
    "en": "Title",
    "de": "Titel",
    "es": "Título",
    "fr": "Titre"
  }
}
<!-- ◎出力例 -->
{{ block.settings.id_text }}

inline_richtext – インラインリッチテキスト

書式設定のある1行テキストを設定します。

メモ

改行不可

{
  "type": "inline_richtext", //必須
  "id": "id_inline_richtext", //必須
  "label": "テキストの入力欄です", //必須
  "default": "デフォルトのテキスト",
  "info": "説明文です"
}
<!-- ◎出力例 -->
{{ block.settings.id_inline_richtext }}

richtext – テキストエリア

書式設定のあるテキストエリアを設定します。

メモ

・pタグ もしくは ulタグ が最上位要素になる必要があります。
・改行可能。

オプションプロパティ説明
placeholderプレースホルダー値が設定できます。
※settings_schema.json での定義が必要。
{
  "type": "richtext", //必須
  "id": "id_richtext", //必須
  "label": "リッチテキストの入力欄です", //必須
  "default": "<p>デフォルトのテキスト</p>",
  "info": "説明文です",
  "placeholder": "t:sections.sample.blocks.richtext.settings.id_richtext.placeholder"
}
<!-- ◎出力例 -->
{{ block.settings.id_richtext }}

選択系

checkbox – チェックボックス

真偽値を返すチェックボックスを設定します。

{
  "type": "checkbox", //必須
  "id": "id_checkbox", //必須
  "label": "チェックボックスです", //必須
  "default": true, //指定しない場合のデフォルトは false
  "info": "説明文です"
}
<!-- ◎出力例 -->
{% if section.settings.id_checkbox == false %}class{% endif %}

radio – ラジオボタン

ラジオボタンを使用して一意のvalueの値を返します。

メモ

default を指定しない場合は最初のオプションがデフォルト値になります。

{
  "type": "radio", //必須
  "id": "id_radio", //必須
  "label": "ラジオボタンです", //必須
  "info": "説明文です",
  "options": [ //必須
    {
      "value": "left",
      "label": "左"
    },
    {
      "value": "center",
      "label": "中央"
    },
    {
      "value": "right",
      "label": "右"
    }
  ],
  "default": "left"
},
<!-- ◎出力例 -->
<div class="align-{{ section.settings.id_radio }}"></div>

range – レンジスライダー

範囲を限定したレンジスライダーを設定します。

メモ

・default が必須項目になります。
・default には min max の値を指定できません。

プロパティ説明
min最小値 (※必須)
max最大値 (※必須)
stepステップ数 (※必須)
unit管理画面に表示させる単位
{
  "type": "range", //必須
  "id": "id_range", //必須
  "min": 8, //必須
  "max": 24, //必須
  "step": 4, //必須
  "default": 16, //必須
  "unit": "個",
  "label": "レンジスライダーです", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
<div class="grid--{{ section.settings.id_range }}-col-desktop"></div>

select – セレクトボックス

セレクターを設定します。

メモ

default を指定しない場合は最初のオプションがデフォルト値になります。

プロパティ説明
options選択項目 (※必須)
group選択項目をグループ化して表示させます
{
  "type": "select", //必須
  "id": "id_select", //必須
  "label": "セレクターです", //必須
  "info": "説明文です",
  "options": [ //必須
    {
      "group": "グループA",
      "value": "top",
      "label": "上"
    },
    {
      "group": "グループA",
      "value": "middle",
      "label": "中央"
    },
    {
      "group": "グループB",
      "value": "bottom",
      "label": "下"
    }
  ],
  "default": "middle"
}
<!-- ◎出力例 -->
<div class="margin-{{ section.settings.id_select }}"></div>

数値系

number – 数値入力

数値入力を設定します。

{
  "type": "number", //必須
  "id": "id_number", //必須
  "label": "数値入力です", //必須
  "default": 20,
  "info": "説明文です"
}
<!-- ◎出力例 -->
{{ section.settings.id_number }}px;

ウィジェット系

article – ブログ記事単体

ブログ記事を1つ出力します。

{
  "type": "article", //必須
  "id": "id_article", //必須
  "label": "記事を選択", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
<a href="{{ section.settings.id_article.url }}">{{ section.settings.id_article }}</a>

blog – ブログ情報

ブログを選択します。

{
  "type": "blog", //必須
  "id": "id_blog", //必須
  "label": "ブログを選択", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
<a href="{{ section.settings.id_blog.url }}">{{ section.settings.id_blog }}</a>

collection – コレクション情報

コレクションを選択します。

メモ

表示させる商品は1ページあたり50個の制限あり。

{
  "type": "collection", //必須
  "id": "id_collection", //必須
  "label": "コレクションを選択", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
{% render 'card-collection',
  card_collection: block.settings.id_collection
%}

collection_list – コレクションリスト

コレクションリストを出力します。
選択したコレクションは配列で返されます。

プロパティ説明
limit設定できるコレクションの最大数(上限:50)
{
  "type": "collection_list", //必須
  "id": "id_collection_list", //必須
  "label": "コレクションリストを選択", //必須
  "limit": 8,
  "info": "説明文です"
}
<!-- ◎出力例 -->
{% for collection in block.settings.id_collection_list %}
    {{ collection.title }}
{% endfor %}

product – 商品情報

商品を選択します。

{
  "type": "product", //必須
  "id": "id_product", //必須
  "label": "商品を選択", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
{% 
  render 'card-product',
  card_product: block.settings.id_product
%}

page – (固定)ページ

ページを選択します。

{
"type": "page", //必須
"id": "id_page", //必須
"label": "ページを選択", //必須
"info": "説明文です"
}
<!-- ◎出力例 -->
<a href="{{ block.settings.id_page.url }}">{{ block.settings.id_page.title }}</a>

カラー系

color – カラー

カラー選択です

{
  "type": "color", //必須
  "id": "id_color", //必須
  "label": "テキストカラー", //必須
  "default": "#000000",
  "info": "説明文です"
}
<!-- ◎出力例 -->
color: {{ settings.id_color }};

color_background – カラー(グラデーション含)

背景色

{
  "type": "color_background", //必須
  "id": "id_color_background", //必須
  "label": "背景色", //必須
  "default": "linear-gradient(#ffffff, #000000)",
  "info": "説明文です"
}
<!-- ◎出力例 -->
background: {{ settings.id_color_background }};

color_scheme – カラースキーマ

「テーマ設定」で設定したカラーパターンを選択します。

{
  "type": "color_scheme", //必須
  "id": "id_color_scheme", //必須
  "label": "Color Scheme", //必須
  "default": "scheme_1" 
}
<!-- ◎出力例 -->
<div class="color-{{ section.settings.color_scheme }}">

参考:Shopify Dev – Input settings “color_scheme”
https://shopify.dev/docs/themes/architecture/settings/input-settings#color_scheme

color_scheme_group – カラースキーマグループ

color_scheme に使用するパターンを定義します。

メモ

config / settings_schema.json で使用します。

{
    "name": "t:settings_schema.colors.name",
    "settings": [
      {
        "type": "color_scheme_group",
        "id": "color_schemes",
        "definition": [
          {
            "type": "color",
            "id": "background",
            "label": "t:settings_schema.colors.settings.background.label",
            "default": "#FFFFFF"
          },
          {
            "type": "color_background",
            "id": "background_gradient",
            "label": "t:settings_schema.colors.settings.background_gradient.label",
            "info": "t:settings_schema.colors.settings.background_gradient.info"
          },
          {
            "type": "color",
            "id": "text",
            "label": "t:settings_schema.colors.settings.text.label",
            "default": "#121212"
          },
          {
            "type": "color",
            "id": "button",
            "label": "t:settings_schema.colors.settings.button_background.label",
            "default": "#121212"
          },
          {
            "type": "color",
            "id": "button_label",
            "label": "t:settings_schema.colors.settings.button_label.label",
            "default": "#FFFFFF"
          },
          {
            "type": "color",
            "id": "secondary_button_label",
            "label": "t:settings_schema.colors.settings.secondary_button_label.label",
            "default": "#121212"
          },
          {
            "type": "color",
            "id": "shadow",
            "label": "t:settings_schema.colors.settings.shadow.label",
            "default": "#121212"
          }
        ],
        "role": {
          "text": "text",
          "background": {
            "solid": "background",
            "gradient": "background_gradient"
          },
          "links": "secondary_button_label",
          "icons": "text",
          "primary_button": "button",
          "on_primary_button": "button_label",
          "primary_button_border": "button",
          "secondary_button": "background",
          "on_secondary_button": "secondary_button_label",
          "secondary_button_border": "secondary_button_label"
        }
      }
    ]
  }

参考:Shopify Dev – Input settings “color_scheme_group”
https://shopify.dev/docs/themes/architecture/settings/input-settings#color_scheme_group

デザイン系

font_picker – フォント

フォントを選択します。

メモ

・default が必須項目になります。
Shopifyフォントライブラリを利用。

{
  "type": "font_picker", //必須
  "id": "id_font_picker", //必須
  "label": "フォントを選択", //必須
  "default": "helvetica_n4", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
:root{
  --font-heading-family: {{ settings.id_font_picker.family }}, {{ settings.id_font_picker.fallback_families }};
}

【参考】
【Shopify】liquidのオブジェクトについてまとめてみた (font, forloop, form)
https://qiita.com/eijiSaito/items/c88a882fb8823706d70d

メディア系

image_picker – 画像

画像を選択します。

{
  "type": "image_picker", //必須
  "id": "id_image", //必須
  "label": "画像を選択", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
{{ 
  section.settings.id_image
  | image_url: width: 3840
  | image_tag:
    loading: 'lazy'
}}

【参考】Shopify Dev – image_tag
https://shopify.dev/docs/api/liquid/filters/image_tag

video – 動画

動画を選択します。

{
  "type": "video", //必須
  "id": "id_video", //必須
  "label": "動画を選択", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
{%- liquid
  assign video_id = section.settings.video.id | default: section.settings.video_url.id
-%}
<deferred-media data-media-id="{{ video_id }}">

video_url – 動画URL

動画のURLを指定します。

{
  "type": "video_url", //必須
  "id": "id_video_url", //必須
  "label": "動画のURLを入力", //必須
  "default": "https://www.youtube.com/watch?v=_9VUPq3SxOc",//デフォルト値の指定が可能です。
  "info": "説明文です",
  "accept": [
    "youtube",
    "vimeo"
  ]
}
<!-- ◎出力例 -->
ID: {{ settings.id_video_url.id }}
Type: {{ settings.id_video_url.type }}

自由入力系

url – URL・リンク

URLを入力します。

{
  "type": "url", //必須
  "id": "id_url", //必須
  "label": "URLを入力", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
{{ block.settings.id_url }}

html – HTMLエディタ

HTMLを自由に入力できます。

メモ

タグがある場合は自動的に削除されます。

{
  "type": "html", //必須
  "id": "id_html", //必須
  "label": "HTMLを入力", //必須
  "info": "説明文です"
}
<!-- ◎出力例 -->
{{ section.settings.id_html }}

liquid – Liquidエディタ

Liquidを自由に入力できます。

{
  "type": "liquid", //必須
  "id": "id_liquid", //必須
  "label": "カスタマイズされたLiquid", //必須
  "default": "{% if product %}sample{% endif %}",
  "info": "アプリのスニペットやその他のLiquidコードを追加して、高度なカスタマイズを作成します。"      	
}
<!-- ◎出力例 -->
{{ section.settings.id_liquid }}

【参考】
Shopify Dev – Sidebar settings
https://shopify.dev/docs/themes/architecture/settings/sidebar-settings
Shopify Dev – Input settings
https://shopify.dev/docs/themes/architecture/settings/input-settings
Shopify Dev – API liquid objects
https://shopify.dev/docs/api/liquid/objects

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です