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

Jekyll中如何按对象子字段排序数组,字段缺失时使用默认值?

Jekyll文章按自定义修改日期排序方案

首先纠正一个认知误区:Liquid 的sort过滤器本身就支持对象数组按指定属性排序,并非仅能处理字符串数组。你可以通过以下步骤实现需求:

  1. 统一排序基准字段:先给所有文章添加统一的排序用临时字段,存在date-edit时优先用该值,不存在则默认使用date
  2. 按统一字段对文章数组排序

完整实现代码

<!-- 先处理所有文章的排序基准字段 -->
{% assign processed_posts = "" | split: "" %}
{% for post in site.posts %}
  {% assign post_sort_date = post.date-edit | default: post.date %}
  {% assign current_post = post %}
  {% assign current_post.sort_date = post_sort_date %}
  {% assign processed_posts = processed_posts | push: current_post %}
{% endfor %}

<!-- 按sort_date排序,需要最新内容在前就保留reverse过滤器,不需要则删除 -->
{% assign sorted_posts = processed_posts | sort: "sort_date" | reverse %}

<!-- 遍历输出排序后的文章列表 -->
{% for post in sorted_posts %}
  <!-- 此处替换为你自己的文章列表渲染逻辑 -->
  <h3><a href="{{ post.url }}">{{ post.title }}</a></h3>
  <p>发布时间:{{ post.date | date: "%Y-%m-%d" }}
  {% if post.date-edit %} | 最后编辑:{{ post.date-edit | date: "%Y-%m-%d" }}{% endif %}</p>
{% endfor %}

注意事项

  • 文章前置元数据中date-edit的格式需要和内置date格式保持一致,推荐使用YYYY-MM-DD HH:MM:SS +时区的标准格式,避免排序逻辑异常
  • 以上写法兼容所有主流Jekyll版本,无需额外安装插件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:27:03