動的セクションにブロックを追加する際のpresetsに関して。

shopify初心者です。

https://www.shopify.jp/blog/partner-shopify-theme-section-first-create

上記のページでセクションに関して学習中です。

ページの中に 「動的セクションにブロックを追加する」
という項目があり、サンプル通りに試して問題なく動くのですが、なぜそのようにコードを書いているのかが理解できない点がありますのでご質問です。


---

  

    ###  {{ section.settings.text-box }} 
  

  {% for block in section.blocks %}  
     
    {{ block.settings.linktext }}
  
 
  {% endfor %}

  

---

{% schema %}
{
  "name": "CTA Blocks",
	"max_blocks": 3,
  "settings": [
    {
      "id": "text-box",
      "type": "text",
      "label": "Heading",
      "default": "Title"
    }
  ],
  "blocks": [
    {
      "type": "select",
      "name": "Add Button",
      "settings": [
        {
          "id": "link",
          "type": "url",
       		"label": "Button link"
        },
        {
          "id": "linktext",
          "type": "text",
          "label": "Button text",
          "default": "Click here"
        }
      ]
    }
  ],
  "presets": [
    {
      "name": "Call to Action Blocks",
      "category": "CTA button",
      "blocks": [
        { 
          "type": "select"
        },
        {
          "type": "select"
        }
      ]
    }
  ]
}
{% endschema %}

{% stylesheet %}
{% endstylesheet %}

{% javascript %}
{% endjavascript %}

上記のコードの中の下記の部分です。

"presets": [
    {
      "name": "Call to Action Blocks",
      "category": "CTA button",
      "blocks": [
        { 
          "type": "select"
        },
        {
          "type": "select"
        }
      ]
    }
  ]

presetsの中に"name",“category"が入るのは理解しているのですが、presetsの中にblocksがあるのはなぜでしょうか?
またそのblocksの中の"type”:"select"が入っている理由が理解できなくて腑に落ちない状態です。。。

何故でpresetsの中にblocksが必要で"type":"select"が入っているかを教えていただきたく思います。

宜しくお願い致します。

■presetsの中のblocksに関しまして

記載されているリンク先の以下の文章(ページ中程です)で説明されているかと思いますが、この内容以上にということでしょうか?

その下に、動的セクションのためpresetsのエリアがあり、インデックスページへの追加が可能になっています。presetsにブロックを追加することで、デフォルトでのブロック表示数を定義することができます。上の例では2つのCTAボタンが表示されることになりますが、上限を3に設定していることを思い出してください。つまり、もう1つブロックを追加することが可能になります。

■typeに関しまして

上記赤枠部分のように、作成したblockのtypeがselectで設定されているからかと思います。

全ての場合において勧めるわけではありませんが、今回に関しては試しにtypeをtextなど別の値に書き換えてみることをお勧めします。ターミナルなどでエラーがでて大まかな理由がわかりますので。

1 Like

ご回答ありがとうございます。

blockのtypeがselectで設定されているので、presetsのblocksでもtypeがselectなのですね!
理解致しました。
typeを変更してエラーを見て理解度も深めてまいります。

ご回答ありがとうございました!

1 Like