【Shopify winter25の新機能】”Theme Block(テーマブロック)”をまとめました

【Shopify winter25の新機能】”Theme Block(テーマブロック)”をまとめました Shopify
【Shopify winter25の新機能】”Theme Block(テーマブロック)”をまとめました
Shopify

Shopify Partnerが作成できる、「Shopify開発者用ストア」(公開できないストアだが、新機能の早期アクセスが可能)にて、

昨年からその機能がアクセスできましたが、Shopify winter’25のアップデートで、

Shopifyの新機能”Theme Block”(テーマブロック)として、あらゆるセクションから呼び出せるブロックを作成できるようになりました。

また、ブロック内にブロックをネストすることもできます。(最大8階層まで可能)

これにより、テーマのカスタマイズが柔軟になり、コードの管理をより簡素化できます。

Shopifyの新機能“Theme Block”(テーマブロック)

blocksディレクトリに格納しコンポーネント化したブロックファイルを、

そのブロックを許容する設定を施したあらゆるセクション内で呼び出せるようになります。

Shopify Dev – Theme blocks

Blocks
Learn about blocks, which enable you to create reusable modules for your theme's sections.

また、今までは仕様上、

ブロックの中にブロックをネストすることができなかったので

下のスクショのようなことをしていました。

Theme Blockでは、ブロックinブロックの仕様が可能になった。

ネスト深度は8階層まで可能という。。(8階層まで使う仕様を想像すると恐ろしい。。)

また、このブロックはテーマ内のどのセクション内でも利用できるようにすることも可能。

ただし、blocksディレクトリに格納したブロックはいきなりどのセクションからでも呼び出せるわけではなく、

セクション単位でどのテーマブロックを利用できるorできないかの指定が必要になります。

テーマのコードのディレクトリに”blocks”が追加されたので、

テーマブロックはここに作成する。

実際に設置して動かしてみよう!

じゃあこの新機能を触るにはどうしたらいいでしょうか?

なんと、以下のようにして、自分で設置しないとデモを触れません。

このへん、Shopifyあるある。「結局コーダーが必要」現象です。

Shopify Dev – Theme blocks – Quick Start

Quick Start
Learn about theme blocks, a way to create reusable modules for structuring content within sections.

記事にしたがって

①/blocks/text.liquid

②/blocks/group.liquid

③/sections/custom-section.liquid

の順に作成すること

①/blocks/text.liquid

{% stylesheet %}
  .text-left {
    text-align: left;
  }

  .text-center {
    text-align: center;
  }

  .text-right {
    text-align: right;
  }
{% endstylesheet %}

<div class="text-block text-{{ block.settings.alignment }}">
  {{ block.settings.text }}
</div>

{% schema %}
{
  "name": "Text",
  "settings": [
    {
      "type": "richtext",
      "id": "text",
      "label": "Text"
    },
    {
      "type": "text_alignment",
      "id": "alignment",
      "label": "Alignment"
    },
  ],
  "presets": [
    { "name": "Text" },
    {
      "name": "Content",
      "settings": {
        "text": "<p>Hello, world!</p>"
      }
    }
  ]
}
{% endschema %}

②/blocks/group.liquid

<div
  class="group-block color-{{ block.settings.color_scheme }}"
>
  {% content_for 'blocks' %}
</div>

{% schema %}
{
  "name": "Group",
  "blocks": [{ "type": "@theme" }, { "type": "@app" }],
  "settings": [
    {
      "type": "header",
      "content": "Color"
    },
    {
      "type": "color_scheme",
      "id": "color_scheme",
      "label": "Color scheme",
      "default": "scheme-1"
    }
  ],
  "presets": [
    {
      "name": "Group"
    },
    {
      "name": "Column",
      "settings": {
        "color_scheme": "scheme-3"
      },
      "blocks": [
        {
          "type": "text",
          "settings": {
            "text": "<h3>Hello, world!</h3>"
          }
        },
        {
          "type": "text",
          "settings": {
            "text": "<p>How's it going?<\/p>"
          }
        }
      ]
    }
  ]
}
{% endschema %}

③/sections/custom-section.liquid

<div class="custom-section color-{{ section.settings.color_scheme }}">
  {% content_for 'blocks' %}
</div>

{% schema %}
{
  "name": "Custom section",
  "blocks": [{ "type": "@theme" }, { "type": "@app" }],
  "settings": [
    {
      "type": "header",
      "content": "Color"
    },
    {
      "type": "color_scheme",
      "id": "color_scheme",
      "label": "Color scheme",
      "default": "scheme-1"
    }
  ],
  "presets": [
    {
      "name": "Custom section"
    },
    {
      "name": "Heading and text",
      "blocks": [
        {
          "type": "group",
          "settings": {
            "color_scheme": "scheme-3"
          },
          "blocks": [
            {
              "type": "text",
              "settings": {
                "text": "<h1>Image with text</h1>"
              }
            },
            {
              "type": "text",
              "settings": {
                "text": "<p>Pair text with an image to focus on your chosen product, collection, or blog post.</p>"
              }
            }
          ]
        }
      ]
    }
  ]
}
{% endschema %}

3つのファイルを新規作成したら、

「テーマのカスタマイズ」画面へ移動して、使用できるかテストしてみる。

以下のスクショのように、blocksディレクトリに格納しているblockファイルを

セクション内の+ボタンで「ブロック」として呼び出せるようになった。

Shopifyのアップデートでブロックを追加するときのUIが変更になっていますね。。

セクション名の下側か、ブロックとブロックの間にマウスカーソルを置くと、+のボタンが表示されるので、

それを押してブロック追加をする形です。

肝は、blocksディレクトリに格納したblockファイルを、sectionファイルの{% schema %}にて”type”で指定すること!

この指定をしていないとそのセクションからblocksに格納したブロックのコンポーネントを呼び出せないです。

最後に

OS2.0で、“Sections Anywhre”(どこにでも利用できるセクション)

としてセクションがテーマ内のテンプレートで柔軟に利用可能になったが、

今回の新機能はいうなれば、”OS3”みたいなナンバリングアップデートではないながら、

Blocks Anywhre”(どこにでも利用できるブロック)

が作成できるようになったということだ。(僕が今そう命名しただけなので公式の呼び方ではないです)

確かに、これまでのDawnのセクション構成でも、

「見出し」という同じ仕様のブロックが何度も登場していたので、

管理が冗長だった。これをコンポーネント化してどこからでも利用できるようになれば、

コードがもっとシンプルにできる。

(ただ、現状の構成からその仕様に改変するのは骨が折れるので、機能追加時や、新規案件で徐々に取り入れていきたい。。)

とはいえ、本当にブロックをどこにでも設置できるようにするためには、

設計がシビアになって逆に柔軟性を欠く可能性があるので、

実際はセクション同様に、制約を持たせる必要があるかと存じます。

吉川直人
著者名:
ECサイト制作に強いフロントエンドエンジニア。Web関連のお役立ち技術情報を発信しています。

2025年の最新のAI生成コーディングのコースをUdemyに公開いたしました。爆速でコードを書きたい方は必見です!!

さらに、今年(2025年)からVoicyのパーソナリティに挑戦し始めました!ラジオでWebエンジニアの生の声をお届けしています。
X Udemy Voicy

Webサイト制作を依頼したい方へ

PRYTHM WORKS(プリズムワークス)は、東京都墨田区、東京スカイツリーのふもとにあるWebコンテンツ制作事務所です。

華々しいおしゃれなECサイトをはじめ、アンダーグラウンドな案件まで幅広くご依頼をいただき、どんな案件でも真心・丁寧・楽しくを理念に掲げて制作しております!

作りたいサービスはあるけど、まずは費用感が知りたい!という方も、まずはお問い合わせください!

mail@prytymworks.tokyo

PRYTHM WORKSが手掛ける仕事の一部をご紹介します。

制作のご依頼者様用 費用かんたんお見積もりフォーム

おそらく本記事を読まれるのは、制作の現場の、法人またはフリーの、プロデューサーの方、ディレクターの方、エンジニアの方がほとんどかと存じます。
いつもおつかれさまです!そして本記事をお読みいただきありがとうございます。
紹介した記事の内容について、またはその他制作のご依頼について、以下のフォームより簡易お見積もりができます!
試算だけならフォーム送信しなくてもできますので、ぜひ試しにいかがでしょう?

お仕事をご希望の制作者様用 お問合せフォーム

また、まずはライトなご相談から…ということであれば、こちらのコンタクトフォームからお気軽にどうぞ!ご縁を大切にしてご返信いたします!

    ShopifyでのECサイト制作を行うならPRYTHMWORKS(プリズムワークス)へ

    ShopifyでのECサイト制作を外注しようとお考えの方は、PRYTHMWORKS(プリズムワークス)にご依頼ください。高品質なWebサイト制作で、お客様のビジネス成長を支援する会社です。Shopifyを使ったECサイト制作に力を入れており、売上向上に貢献するECサイト構築を代行いたします。豊富な経験と実績にもとづき、お客様のニーズに最適なECサイトを構築しますので、費用相場や制作事例など、気になることがございましたらお気軽にお問い合わせください。移行のご相談も承っております。

    社名合同会社PRYTHMWORKS
    事業内容EC/Webサイトの構築、管理保守
    CEO吉川直人
    法人事務所所在地〒150-0001
    東京都渋谷区神宮前六丁目23番4号桑野ビル2階
    設立日2023年(令和5年)7月3日
    沿革2020年(令和2年)10月
    PRYTHMWORKS事業開始
    2023年(令和5年)7月
    合同会社PRYTHMWORKS設立

    お問い合わせ用LINEはこちらからどうぞ!

    お問い合わせ用LINEはこちらからどうぞ!

    LINE
    タイトルとURLをコピーしました