Shopify自定义主题:能否在settings_schema.json中添加blocks?如何操作?
关于Shopify settings_schema.json添加blocks的问题
兄弟,先给你拍板说清楚——settings_schema.json里是不能直接添加"blocks"字段的!这个配置项是Shopify主题sections专属的,全局主题设置的schema规则里根本没这个玩法,你硬加的话系统完全识别不了,等于白忙活。
为啥不行?
简单说,sections的blocks是用来让商家在页面编辑器里灵活添加、删除、排序重复模块的(比如轮播图的每一张图、产品展示的每个模块);而settings_schema.json管的是全局主题设置(比如全站的颜色方案、字体、全局开关这类),它的合法结构只有name、settings、presets这些字段,blocks不在允许的配置范围内。
那想实现类似blocks的重复配置怎么办?
如果你是想在全局设置里实现“可重复添加一组配置项”的效果,可以用settings里的repeater类型,它能达到和blocks类似的“多组重复配置”的目的。举个实际例子,比如你想让商家全局配置多个社交平台链接:
{ "name": "Social Links", "settings": [ { "type": "repeater", "id": "social_links", "label": "添加社交媒体链接", "settings": [ { "type": "select", "id": "social_platform", "label": "平台", "options": [ {"label": "Facebook", "value": "facebook"}, {"label": "Instagram", "value": "instagram"}, {"label": "Twitter", "value": "twitter"} ] }, { "type": "url", "id": "social_url", "label": "链接地址" } ] } ] }
在主题模板里调用这些配置的话,用Liquid遍历就行:
{% for link in settings.social_links %} <a href="{{ link.social_url }}" target="_blank" rel="noopener noreferrer"> {% case link.social_platform %} {% when 'facebook' %} <span class="icon-facebook">Facebook</span> {% when 'instagram' %} <span class="icon-instagram">Instagram</span> {% when 'twitter' %} <span class="icon-twitter">Twitter</span> {% endcase %} </a> {% endfor %}
最后再唠两句
如果你的需求是在页面特定位置灵活添加模块化内容,那还是得回到sections里用blocks;如果只是全局范围内的可重复配置项,用repeater就完全能满足需求啦。
内容的提问来源于stack exchange,提问作者Nidhi
相关产品推荐
相关产品推荐

