Shopify 主题与 Liquid

Liquid json 过滤器输出到 script 标签里报语法错误

现象#

把商品数据用 {{ product | json }} 塞进内联 script,控制台报 Unexpected token & 或引号错乱。

原因#

  • 外层用了 | escape,把引号转成了 HTML 实体
  • JSON 里含有 字符串,提前闭合了脚本标签
  • 输出被放在双引号属性里,JSON 的双引号直接破坏属性
  • 用了 json 之后又接了 strip_html 等会改内容的过滤器

处理步骤#

  1. 内联数据用 <script type="application/json" id="product-data">{{ product | json }}</script>,再用 JS 读取并 parse
  2. 必须内联到 JS 时用 {{ product | json | replace: ' 防闭合
  3. 去掉多余的 escape / strip_html
  4. 需要传给 JS 的字段多时只挑必要字段构造对象,减小体积

验收标准#

浏览器控制台无语法错误,JSON.parse 能拿到完整对象,商品字段与后台一致。

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