You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在产品WYSIWYG编辑器中调用Liquid变量标签?

问题解答:Liquid变量在产品WYSIWYG编辑器中不生效的原因与解决办法

首先直接给结论:是的,默认情况下Liquid变量/标签仅能在主题的Liquid模板文件(.liquid后缀)中生效,产品编辑器(WYSIWYG)里的产品描述属于静态存储的内容,Shopify不会自动解析其中的Liquid语法——这就是你遇到问题的核心原因。

为什么会这样?

Shopify的页面渲染流程是这样的:

当用户访问页面时,服务器首先解析主题的Liquid模板文件,执行所有Liquid标签、变量运算,生成基础HTML结构;之后再把存储在数据库里的产品描述、页面内容等静态文本插入到这个HTML结构中。这个阶段已经没有Liquid解析步骤了,所以你在产品描述里写的{{ favorite_food }}会被当成纯文本直接显示,而不会被替换成变量值。

解决办法:用模板层替换实现动态内容

既然产品描述本身不支持Liquid解析,我们可以换个思路:在产品模板Liquid文件里处理变量,然后把产品描述里的占位符替换成变量值。下面是两种常用方案:

方案1:针对全局变量(所有产品共用同一个值)

比如你在主题文件里定义的{% assign favorite_food = 'apples' %}是全局的,所有产品都用这个值:

  1. 在产品编辑器的WYSIWYG里,把原来的My favorite food is {{ favorite_food }}.改成带占位符的文本,比如:My favorite food is [FAVORITE_FOOD].
  2. 找到主题里负责输出产品描述的Liquid文件(通常是product.liquid或者sections/product-template.liquid),找到输出产品描述的代码行(一般是{{ product.description }}),修改成:
{% assign favorite_food = 'apples' %}
{{ product.description | replace: '[FAVORITE_FOOD]', favorite_food }}

这样,当模板渲染时,会自动把产品描述里的[FAVORITE_FOOD]替换成变量favorite_food的值。

方案2:针对单个产品的动态值(每个产品可以自定义)

如果每个产品的“favorite food”不一样,可以用**元字段(Metafields)**来实现:

  1. 给每个产品添加一个自定义元字段(比如命名为custom.favorite_food),填入对应的值(比如“apples”“bananas”等)
  2. 在产品编辑器的WYSIWYG里,同样用占位符:My favorite food is [FAVORITE_FOOD].
  3. 修改产品模板里的描述输出代码为:
{{ product.description | replace: '[FAVORITE_FOOD]', product.metafields.custom.favorite_food.value }}

这样每个产品的描述里都会显示自己元字段对应的内容。

额外优化:用主题设置让非技术人员也能修改

如果这个全局变量需要经常修改,不想每次改代码,可以在主题设置里添加一个自定义文本字段:

  1. 进入主题的“编辑代码”,找到settings_schema.json,添加一个文本输入项(具体语法可参考Shopify内置的主题设置示例)
  2. 在产品模板里调用settings.favorite_food来替换占位符,这样商家在主题设置里就能直接修改值,不用碰代码。

注意事项

  • 不要在产品描述里直接写Liquid标签,它们会被当成纯文本显示,比如{{ favorite_food }}会直接出现在页面上,而不是变量值。
  • 占位符可以自定义,只要和模板里的replace参数对应上就行,比如用{{FAVORITE_FOOD}}或者__FAVORITE_FOOD__都可以,避免和其他文本冲突。

内容的提问来源于stack exchange,提问作者Axion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:36:06