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