Shopify 主题与 Liquid

Shopify Liquid assign 赋值后变量为空怎么排查

现象#

在 section 或模板里 assign 了变量,紧接着输出却是空白;把同样的代码放进 snippet 又有值,返回主模板后又变空。

原因#

  • assign 只在当前作用域生效,写进 include、render 或 for 内部的赋值不会带回外层
  • 后面又写了一次同名 assign,把前面的值覆盖掉了
  • 赋值写在 {% if %} 分支里,条件实际没命中,变量从未被创建
  • 变量名与 Liquid 已有对象重名(如 product、settings),被内置对象顶掉

处理步骤#

  1. 在 assign 下一行插入 {{ my_var | json }},先确认赋值本身是否执行到
  2. 检查赋值语句的缩进与所在标签块,确认它在 for / if / include 内部还是外部
  3. 需要把 snippet 内的结果带回主模板时,改用 capture 包住输出,或让 snippet 直接 {{ value }} 输出而不是 assign
  4. 全文件搜索同名变量,删掉后出现的重复 assign
  5. 变量名加项目前缀(如 fg_)避免与内置对象冲突

验收标准#

页面源码中该变量输出为真实值;删除调试用的 | json 后前台显示正常,控制台无 Liquid 报错。

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