Shopify 主题与 Liquid

Shopify Liquid json 输出商品名带引号把脚本截断

现象#

把商品数据塞进 script 给前端用,标题带英文双引号或结束标签时,控制台报 Unexpected token,页面下半部分脚本全部失效。

原因#

  • json 只保证 JSON 语法合法,不会针对 HTML 上下文转义 script 结束标签
  • 手写字符串拼接时没有转义引号和反斜杠,JSON 在第一个引号处就断了
  • 标题中的换行与 emoji 未处理,输出到内联脚本后解析中断
  • 把 json 结果写进 data- 属性时又漏了一次 escape

处理步骤#

  1. 统一用 {% assign payload = product | json %} 生成,不要手写引号拼接
  2. 放进页面时用 <script type="application/json"> 数据块,前端再 JSON.parse
  3. 写进属性时加一层转义:data-product="{{ product | json | escape }}"
  4. 前端解析后通过 textContent 插入标题,不要直接拼 innerHTML
  5. 用一个标题含双引号、尖括号和 emoji 的测试商品完整验证

验收标准#

该商品页控制台无解析错误,前端 JSON.parse 拿到的 title 与原标题逐字一致,页面其余脚本正常执行。

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