Shopify Liquid assign 赋值后变量为空怎么排查
现象#
在 section 或模板里 assign 了变量,紧接着输出却是空白;把同样的代码放进 snippet 又有值,返回主模板后又变空。
原因#
- assign 只在当前作用域生效,写进
include、render或for内部的赋值不会带回外层 - 后面又写了一次同名 assign,把前面的值覆盖掉了
- 赋值写在
{% if %}分支里,条件实际没命中,变量从未被创建 - 变量名与 Liquid 已有对象重名(如
product、settings),被内置对象顶掉
处理步骤#
- 在 assign 下一行插入
{{ my_var | json }},先确认赋值本身是否执行到 - 检查赋值语句的缩进与所在标签块,确认它在 for / if / include 内部还是外部
- 需要把 snippet 内的结果带回主模板时,改用
capture包住输出,或让 snippet 直接{{ value }}输出而不是 assign - 全文件搜索同名变量,删掉后出现的重复 assign
- 变量名加项目前缀(如
fg_)避免与内置对象冲突
验收标准#
页面源码中该变量输出为真实值;删除调试用的 | json 后前台显示正常,控制台无 Liquid 报错。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。