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

Jekyll中if-else过滤器语法失效:需按需加载flip-cards脚本

解决Jekyll中flip-cards组件脚本的条件加载问题

我明白你遇到的问题了——Liquid的if语句里直接用过滤器确实会出问题,因为它的语法规则不允许在条件判断里直接串联过滤器。咱们一步步来解决:

原代码的问题

你原来的写法:

{% if page.flip-cards.items | size > 0 %} {% include cards-scripts.html %} {% endif %}

错误在于Liquid会把page.flip-cards.items | size > 0当成一个整体,没办法正确解析过滤器的逻辑,导致条件判断失效。

方案1:先赋值变量再判断

最稳妥的方式是先用assign把items的数量存成变量,再在if里判断这个变量:

{% assign flip_card_item_count = page.flip-cards.items | size %}
{% if flip_card_item_count > 0 %}
  {% include cards-scripts.html %}
{% endif %}

这样Liquid会先处理过滤器得到正确的数量,再进行大于0的判断,完全符合语法规则。

方案2:直接判断组件是否激活(更贴合你的需求)

如果你的CMS在激活flip-cards组件时,会自动给page对象添加flip-cards属性(不管items有没有内容),那你其实可以不用判断items数量,直接检查这个属性是否存在就行——这更贴合你“仅在组件激活时加载脚本”的需求:

{% if page.flip-cards %}
  {% include cards-scripts.html %}
{% endif %}

这种写法更简洁,也避免了处理items可能为空的情况,只要组件被激活,脚本就会加载。

补充:关于你提到的“移除过滤器用do...”

你说的应该是通过assign(也就是Liquid里的赋值操作)来替代直接在if里用过滤器的写法,上面的方案1就是这种思路,把过滤后的结果先存到变量里,再用变量做判断,完全避开了原写法的语法陷阱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:08:59