目录
Objects (对象)
全局对象
all_products:商店中所有的商品
articles: 商店中的所有文章
collections:商店中所有的集合
模板对象
在product.json(配置的section中) 访问product对象
在collection.json中可访问collection对象
在article.json中可访问article对象
schema
基本input settings : text、textarea、range、radui、select等等
特定input settings
settings_schema.json(config文件夹)
在前面几章讲到shopify的项目结构,也讲到了如何像其他编程语言一样声明变量、条件判断、循环、使用filters等等,唯独没有讲到如何在模板中渲染数据,本次配合前几章还有官方文档讲解如何在模板中访问数据。
官方文档:Liquid objects
Objects (对象)
在shopify中有能全局访问的对象和能在页面中访问的对象以及在section schema配置的特定模型对象和settings_schema.json中配置的模型对象
全局对象
有如上Global表示该对象能全局访问,例如
all_products:商店中所有的商品
{{ all_products['black-leather-bag'].title }}
可以通过句柄去访问指定的product
articles: 商店中的所有文章
{{ articles['testing/my-first-blog'].title }}
可以通过句柄去访问指定的article
collections:商店中所有的集合
可直接循环遍历
{% for collection in collections %}
{{- collection.title | link_to: collection.url }}
{% endfor %}
也可通过句柄去访问指定collection
{% for product in collections['spring'].products %}
{{- product.title | link_to: product.url }}
{% endfor %}
模板对象
shopify有指定的页面模板,比如集合列表模板(Collections List)、商品集合模板(Collections)、文章模板(Blog posts)、商品模板(Products)等等
在product.json(配置的section中) 访问product对象
{% form 'product', product %}
<select name="id">
{% for variant in product.variants %}
<option value="{{ variant.id }}">
{{ variant.title }}
</option>
{% endfor %}
</select>
<button type="submit">Add to cart</button>
{% endform %}
在collection.json中可访问collection对象
<h1>
{{ collection.title }}
</h1>
在article.json中可访问article对象
<h1>{{ article.title }}</h1>
另外在page.json访问page对象、在search.json中访问search对象等等
schema
以下是schema配置和input settings的官方文档
Section schema
Input settings
在section中配置schema的settings中的模型值有两种类型,一种是基本input settings,还有特定input settings
基本input settings : text、textarea、range、radui、select等等
{
"type": "checkbox",
"id": "checkbox",
"label": "sel",
"default": true
},
{
"type": "radio",
"id": "radio",
"label": "Radio",
"options": [
{
"value": "left",
"label": "Left"
},
{
"value": "centered",
"label": "Centered"
}
],
"default": "left"
},
{
"type": "range",
"id": "font_size",
"min": 12,
"max": 24,
"step": 1,
"unit": "px",
"label": "Font size",
"default": 16
}
在模板中访问之前, 需要了解一下页面组成, 页面由特定xxx-group和template模板组成,每一个template模板都由section组成,每一个section也可以有若干block。
section对象有配置的settings,有blocks,还有唯一id等
通过section.settings.[id]去访问配置的模型值
{% assign radio = section.settings.radio %}
{% assign font_size = section.settings.font_size %}
<div>radio value: {{ radio }}</div>
<div>font_size value: {{ font_size }}</div>
特定input settings
包括blog、article、collection、collection_list、product、image_picker等等
基本的input settings渲染的值是基本数据,特定input settings如果是一个对象,则需要查阅文档去查阅相关对象。
比如article:
{
"type": "header",
"content": "type article"
},
{
"type": "article",
"id": "article",
"label": "Article"
}
shopify商城后台customize
article对象
访问article
{% assign article = section.settings.article %}
<div>{{ article.title }}</div>
<div>{{ article.content }}</div>
比如block:
block里的settings和schema设置的settings是完全一样的
"blocks": [
{
"name": "Slide",
"type": "slide",
"settings": [
{
"type": "image_picker",
"id": "image",
"label": "Image"
}
]
}
],
block对象
访问block
<div class="slide">
{% for block in section.blocks %}
{% case block.type %}
{% when 'slide' %}
{% assign image_url = block.settings.image | image_url %}
<div class="img">
<img width="100%" height="100%" src="{{ image_url }}/">
</div>
{% endcase %}
{% endfor %}
</div>
settings_schema.json(config文件夹)
在模板中访问
{{ settings.color_page_bg }}