主题块定位

主题块定位允许主题开发者指定哪些块可以被使用在某个区域。在一个主题区域中,主题开发者可以选择:

  1. 接受所有主题块的使用
  2. 接受特定主题块的使用

接受所有主题块

通过在该区域的 schemablocks 属性 中添加类型为 @theme 的通用条目,即可接受该区域中所有主题块的使用。如果需要对特定区域中允许使用的块进行更严格的限制,请使用 块定位

在以下示例中,该区域将可以访问所有主题块。

  1. {% content_for 'blocks' %}
  2. {% schema %}
  3. {
  4. "name": "Section",
  5. "blocks": [{"type": "@theme"}]
  6. }
  7. {% endschema %}

接受特定主题块

要接受特定主题块,主题开发者可以在 schema 中显式引用这些块。在以下示例中,轮播图区域将只能访问 Slide 主题块。在编辑器中,轮播图的块选择器只会显示一个块:slide。默认情况下,主题块在所有区域和其他主题块中都可用。在本示例中,slide 块将会出现在所有区域的块选择器中,而不仅仅是轮播图区域。

  1. {% content_for 'blocks' %}
  2. {% schema %}
  3. {
  4. "name": "Slide"
  5. }
  6. {% endschema %}
  1. {% content_for 'blocks' %}
  2. {% schema %}
  3. {
  4. "name": "Slideshow",
  5. "blocks": [{"type": "slide"}]
  6. }
  7. {% endschema %}

私有块

在某些情况下,你可能希望限制某些块在区域中的可用性。例如,slide 是一种应该仅在轮播图区域中使用的块类型。要防止默认行为,主题开发者可以将块命名为以下划线开头。

在这种情况下,slide.liquid 可以重命名为 _slide.liquid。所有以下划线开头的块将不会出现在 blocks 或 sections 中,且这些块和区域需要通过基础文件名显式添加。例如:“blocks”: [ { “type”: “_slide” } ]

  1. {% schema %}
  2. {
  3. "name": "Slide"
  4. }
  5. {% endschema %}
  1. {% content_for 'blocks' %}
  2. {% schema %}
  3. {
  4. "name": "Slideshow",
  5. "blocks": [{"type": "_slide"}]
  6. }
  7. {% endschema %}