自作テーマの動的セクションの追加について

Topic summary

Shopify初心者が自作テーマで動的セクションの追加機能を実装しようとしている。

問題点:

  • liquidファイルにセクションタグで固定配置はできるが、「セクションを追加」ボタンが表示されず動的追加ができない
  • 既存テーマ(Debut)では実現できているが、自作テーマでは実装方法が不明
  • Schemaは定義済みで、presetsの設定が必要かどうか疑問を持っている

解決策:
回答者がindex.jsonにセクションを記載することで初期配置セクションとして設定できると提案。Dawnテーマのindex.jsonを参考にするよう助言。

結果:

  • 質問者はDawnテーマで動的セクション追加を確認でき、JSONテンプレートについて学習できた
  • 追加質問として、オリジナルテーマ作成時にブランクテーマではなく既存テーマ(Dawn等)をベースにカスタマイズする方が一般的か、またLiquidテンプレートよりJSONテンプレートが推奨されるのか確認
  • 回答者は要件次第だが、OS2.0以降はJSONがデフォルトと説明
  • 質問者は既存テーマベースのカスタマイズを検討することで解決
Summarized with AI on November 20. AI used: claude-sonnet-4-5-20250929.

Shopifyの経験は浅いのですが、自作テーマを制作しています。

どなたか詳しい方、知恵をお貸しいただけないでしょうか。

・実現したいこと

作成したセクションをトップページで動的に追加できるようにしたい

・現状の問題

テンプレートのliquidファイル内にセクションタグを使って固定であればセクションを配置することはできるものの、「セクションを追加」というボタンが表示がない状態で動的に追加できない。

Schemaは下記のように定義しており、上記のように固定であればセクションを使うことができています。ちなみに、自作テーマではなく、既存テーマ(Debut)であればやりたいことが実現できている状況です。

{% schema %}
{
  "name": "繰り返しコンテンツ",
  "settings": [],
  "blocks": [
    {
      "type": "repeat-content",
      "name": "繰り返しコンテンツ",
      "settings": [
        {
          "type": "text",
          "id": "title",
          "label": "コンテンツタイトル"
        }, {
          "type": "richtext",
          "id": "body",
          "label": "コンテンツ本文"
        }
      ]
    }
  ],
  "presets": [
    {
      "name": "繰り返しコンテンツ"
    }
  ]
}
{% endschema %}

上記のpresetsの項目で指定があれば、「セクションを追加する」ボタンから選択肢として項目が表示され、セクションを挿入することができるのかなと思っていたのですが、実装方法に誤りがあるのか、そもそも別の設定が必要になるのでしょうか?

恐れ入りますがご教授いただけますと幸いです。
よろしくお願いいたします。

「セクションを追加」というボタンが表示がない状態で動的に追加できない。

上記は以下の意味であっていますでしょうか?

  • 該当のセクションを初期配置のセクションとして設定したい

あっている場合、index.jsonにセクションを記載すれば実現可能だと思います。

Dawnなどのテーマのデフォルトのindex.jsonなどを見れば初期設定セクションの記載が確認できますので、そちらを参考に追加するとよいと思います。

https://github.com/Shopify/dawn/blob/main/templates/index.json

以上ですが、理解が間違っている場合は申し訳ありません。

ご返信が遅くなりまして申し訳ございません、ご教授いただきありがとうございます。

実際に「Dawn」のテーマで動的セクションが追加されるのを確認できました。JSONテンプレートの方はあまり詳しくなく、今回色々と触ってみて勉強になりました。ありがとうございました。

返信ついでの質問で大変恐縮なのですが、やはりオリジナルでテーマの作成する際には、Theme Kitのnewコマンドで新規作成できるブランクテーマではなく、Dawnなどの既存テーマからカスタマイズしていくのが一般的なのでしょうか?(そもそもLiquidテンプレートではなくJSONテンプレートの方が良い?)

独自のデザインであれば上記のブランクテーマの方が進めやすそうということで、色々と触っていたのですが、動的セクションの部分がいまいち思ったようにならず、、既存テーマをベースにしたものであれば想定していることが実現でき、情報を探してみても既存テーマベースのものがほとんどだったので、実際にはどのように作成されているのかなと思いまして。

恐れ入りますがご確認いただけますと幸いです。

オリジナルでテーマの作成

要件次第だと思います。

例えば、Dawnテーマ内蔵機能で問題はなくカスタマイズで対応できるならDawnテーマを使います。

Dawn含め既存テーマのカスタマイズで要件を満たせない場合はオリジナルでの作成が視野に入ります。

そもそもLiquidテンプレートではなくJSONテンプレートの方が良い?

OS2.0以降はJSONがデフォルトだと思うので悩む場面はあまり思い浮かびませんが、こちらも要件次第だと思います。

1 Like

ご返信が遅くなり申し訳ございません、ご回答ありがとうございました、なるほどですねやはりまずは既存テーマをベースにカスタマイズを検討するイメージですね、参考にさせていただきます。ありがとうございました。