snippet 里取 section.settings 为空怎么办
现象#
在 section 里 render 一个徽章片段,片段里写 section.settings.badge_text 输出空白,而同样一行写在 section 主文件里就有值。
原因#
- render 隔离作用域,片段内根本没有 section 对象,只有显式传入的变量
- 同一个片段被多个 section 复用,各自的设置结构不同,无法自动继承
- 误写成全局的 settings.xxx,那是主题设置,不是当前 section 的设置
- 传参的键名与片段里读取的名字不一致,取到 nil
处理步骤#
- 调用时显式传值:
{% render 'badge', text: section.settings.badge_text %} - 片段内改成
{{ text }},删除所有对 section 的引用 - 需要整组设置时传对象:
{% render 'badge', cfg: section.settings %},内层用cfg.badge_text - 检查是否把
section.settings写成了全局的settings - 临时输出
{{ text | json }},确认传进来的值不是 nil
验收标准#
在编辑器里修改徽章文案后,前台片段同步更新;页面源码中不再出现空的 span 或 div。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。