玲珑少年

玲珑少年

Developer

© 2018~2023

Liquid group by用法

注意: 本文主要讲述Liquid 过滤器: group_by & group_by_exp 用法。基于Liquid 4.0.3。

顾名思义,此过滤器允许您按特定属性对内容进行分组。

1. group_by

例如:我们根据发帖的年份对帖子进行分组。

{% assign posts_by_year = site.posts | group_by:"year" %}

分组后结果如下:

[
    {"name": "2019","items": [...]},
    {"name": "2020","items": [...]},
    ...
]

你同样可以根据帖子的作者进行分组。如:

{% assign posts_by_author = site.posts | group_by:"author" %}
{% assign posts_by_color = site.pages | group_by:"meta.color" %}

2. group_by_exp

使用场景:当group_by 的属性不能直接获取时,需要用到 group_by_exp。

例如:我们无法获取帖子的年份。但是可以根据发帖时间获取发帖年份,用法如下:

{% assign post_by_year = site.posts | group_by_exp: "item","item.date|date: '%Y'" %}

完整示例:

{% assign post_by_year = site.posts | group_by_exp: "item","item.date|date: '%Y'" %}

{% for year in posts_by_year %}
  <h2>{{year.name}}</h2>
  <ul>
  {% for post in year.items %}
    <li><a href="{{post.url}}">{{post.title}}</a></li>
  {% endfor %}
  </ul>
{% endfor %}

尾记:

group_by & group_by_exp 都可与sort结合使用