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

如何用page.title在静态页面动态筛选同名标签产品?

动态筛选匹配页面标题标签的产品

问题背景

你在名为“Haarentfernung”的静态页面中,需要列出带有同名标签的产品,目前硬编码标签名可实现筛选,但尝试用page.title动态传入where过滤器时失败——不管直接写{{ page.title }}还是用单引号包裹都无法生效。

解决方案

在Liquid语法里,过滤器中引用变量不需要加{{ }},直接写变量名即可。针对产品标签的动态筛选,有两种简洁可行的写法:

方法1:循环内直接判断标签匹配

{% paginate collections.all.products by 999 %}
  {%- assign target_tag = page.title -%}
  {%- for product in collections.all.products -%}
    {%- if product.tags contains target_tag -%}
      <!-- 这里可输出产品信息,比如标题、链接等 -->
      <p>{{ product.title }}</p>
    {%- endif -%}
  {%- endfor %}
{% endpaginate %}

方法2:先过滤产品集合再循环

如果想先筛选出所有匹配产品再处理,可直接用where过滤器针对产品的tags属性过滤:

{% paginate collections.all.products by 999 %}
  {%- assign target_tag = page.title -%}
  {%- assign filtered_products = collections.all.products | where: 'tags', target_tag -%}
  {%- for product in filtered_products -%}
    <p>{{ product.title }}</p>
  {%- endfor %}
{% endpaginate %}

注意事项

  1. 大小写兼容处理:Liquid的contains和where均为大小写敏感,如果标签与页面标题存在大小写差异,可统一转成小写后再判断:
{%- assign target_tag = page.title | downcase -%}
{%- for product in collections.all.products -%}
  {%- if product.tags | join: ',' | downcase contains target_tag -%}
    <p>{{ product.title }}</p>
  {%- endif -%}
{%- endfor %}
  1. 精确匹配需求:如果需要严格匹配标签(避免部分字符串匹配),优先使用where过滤器,它会精准匹配数组中的完整元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:55:04