DotLiquid中如何在标签内使用变量?已尝试capture/assign无效
在DotLiquid标签内使用变量的正确方式
嘿,我来帮你搞定这个问题!你遇到的核心问题是在DotLiquid的标签(比如{% for %})内部使用filter参数时,不需要用双大括号{{}}包裹变量——双大括号是用来把变量输出到最终HTML里的,而标签内部直接引用变量名就可以了。
正确写法示例
你不需要写成{% for product in category.products | limit: {{section.limit}} %},直接去掉变量外的双大括号就行:
{% for product in category.products | limit: section.limit %} <!-- 这里写你的产品渲染逻辑,比如输出产品标题 --> <h3>{{ product.title }}</h3> {% endfor %}
为什么你之前用capture/assign没生效?
如果之前尝试用assign还是不行,大概率是这两个原因:
- 变量名拼写错误:检查
section.limit是否确实存在,有没有写错大小写或者字段名 - 变量类型不匹配:如果
section.limit是字符串类型(比如从配置里读出来的文本),需要先转成数字再用,比如:
{% assign valid_limit = section.limit | plus: 0 %} {% for product in category.products | limit: valid_limit %} <!-- 产品渲染代码 --> {% endfor %}
这里用plus: 0可以把字符串形式的数字转成数值类型,确保limit filter能正确识别。
补充说明
DotLiquid的标签内部({% ... %}包裹的部分)是直接执行Liquid逻辑的上下文,所有变量都可以直接通过名称引用,不需要额外的插值语法。只有当你需要把变量的值输出到页面的HTML内容里时,才需要用{{变量名}}的格式。
内容的提问来源于stack exchange,提问作者Kaner TUNCEL
相关产品推荐
相关产品推荐

