Shopify 主题与 Liquid

snippet 里取 section.settings 为空怎么办

现象#

在 section 里 render 一个徽章片段,片段里写 section.settings.badge_text 输出空白,而同样一行写在 section 主文件里就有值。

原因#

  • render 隔离作用域,片段内根本没有 section 对象,只有显式传入的变量
  • 同一个片段被多个 section 复用,各自的设置结构不同,无法自动继承
  • 误写成全局的 settings.xxx,那是主题设置,不是当前 section 的设置
  • 传参的键名与片段里读取的名字不一致,取到 nil

处理步骤#

  1. 调用时显式传值:{% render 'badge', text: section.settings.badge_text %}
  2. 片段内改成 {{ text }},删除所有对 section 的引用
  3. 需要整组设置时传对象:{% render 'badge', cfg: section.settings %},内层用 cfg.badge_text
  4. 检查是否把 section.settings 写成了全局的 settings
  5. 临时输出 {{ text | json }},确认传进来的值不是 nil

验收标准#

在编辑器里修改徽章文案后,前台片段同步更新;页面源码中不再出现空的 span 或 div。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。