← inaro.devShopify学習ツール
09-05

テーマブロックを作る

blocks/*.liquidにテーマブロックを定義し、複数のセクションから受け入れて再利用できる

最終確認: 2026-09

解説

受託の現場でなぜ必要か: この回では、blocks/*.liquidにテーマブロック(テーマ全体で使い回せる部品)を1つ作り、セクションから受け入れて再利用できるようになります。
受託のHorizon系案件では「ブロックを作って既存セクションに入れる」ことが増えるので、この形が実装の基本単位です。

テーマブロックとは、1ファイル1ブロックの部品

blocks/icon-text.liquidのように、1ファイルに1ブロックを書きます。
自分の{% schema %}name / settings / presetsを持ちます。
blocks: [{ "type": "@theme" }]を書けば、子ブロックを受け入れてネスト(入れ子)にできます。
ネストはセクションを除いて最大8階層です。
Skeleton themeのblocks/を読むのが、いちばん早い学習方法です。

外側の要素(ラッパー)とtag

描画されるとき、shopify-blockクラスのdivで自動的に包まれます。
tagで要素名を変えられ、"tag": nullで外せます。
外したときは、自分の最上位の要素に{{ block.shopify_attributes }}を必ず付けます(Skeleton themeは常に付けています)。

セクション側で受け入れるには、2つ書く

セクションのschemaに"blocks": [{ "type": "@theme" }](全テーマブロック)か、特定のtypeを列挙します。
マークアップに{% content_for 'blocks' %}を置きます。
これを置き忘れると、子ブロックは描画されません。
{ "type": "@app" }も並べると、アプリブロックも受け入れられます。
これがテーマをアプリ対応にする基本です。

発展:セクション内ブロックとは両立できない

1つのセクションは、セクション内ブロックを定義するか、テーマブロックを受け入れるかのどちらか一方です。
同時にはできません。
Dawn系はセクション内ブロック、Horizon系はテーマブロックが実装単位です。

ステップ1 / 2

ShopifyはShopify Inc.の商標です。本サイトは個人が制作した非公式の学習教材であり、同社の承認・提携・後援を受けていません。記載内容は2026-09時点のものです。料金・上限値・管理画面のラベルは変わるため、作業の前に公式ドキュメントで確認してください。