首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以根据两个变量对Jekyll数组进行排序?

问是否可以根据两个变量对Jekyll数组进行排序?
EN

Stack Overflow用户
提问于 2020-09-07 23:54:19
回答 1查看 64关注 0票数 0

在我的网站首页,我显示了一些最新的帖子:

代码语言:javascript
复制
{% for post in posts limit: 6 %}
  ...
{% endfor %}

这可以很好地工作。

最近我一直在编辑一些老帖子,我希望它们能显示在首页的这个列表中。

我不想更改他们的日期。相反,我在编辑每个帖子时都添加了一个新的lastUpdated变量,该变量的日期是我编辑它的日期。

代码语言:javascript
复制
layout: example
lastUpdated: 2020-09-07
---

因此,现在我想修改我的首页上的代码,以便如果一个帖子有lastUpdated,它就按date排序,否则它就应该按has排序。

我试过这个:

代码语言:javascript
复制
{% assign posts = site.posts
    | reverse
    | sort: "lastUpdated"
    | reverse %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}

我认为这是可行的,但结果是它将所有编辑过的帖子(包含lastEdited变量的帖子)排在最前面,然后是新创建的帖子。我希望编辑后的帖子和新创建的帖子都显示在这个列表中,基于它们的“修改”日期。

我试过这个:

代码语言:javascript
复制
{% assign posts = site.posts
    | sort: "lastUpdated or date" %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}

但这给了我默认顺序的帖子,大概是因为"lastUpdated or date"不是一个有效的属性。

我还尝试了这个:

代码语言:javascript
复制
{% assign posts = site.posts
    | sort: "lastUpdated" or "date" %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}

但不足为奇的是,这是一个语法错误。

有没有什么简单的方法可以做到这一点,我错过了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-07 23:54:19

刚写完这篇文章,我就nerd-sniped自己拼凑了一个解决方案,创建了两个数组,然后根据lastUpdated和date变量将它们合并在一起。

代码语言:javascript
复制
{% assign createdPosts = site.posts %}
{% assign updatedPosts = site.posts | sort: "lastUpdated" | reverse %}

{% assign createdIndex = 0 %}
{% assign updatedIndex = 0 %}

{% for i in (1..10) %}
  {% assign createdDate = createdPosts[createdIndex].date | date: "%Y-%m-%d" %}
  {% assign updatedDate = updatedPosts[updatedIndex].lastUpdated | date: "%Y-%m-%d" %}

  {% if createdDate > updatedDate or updatedDate == nil %}
    // HTML for createdPosts[createdIndex]
    {% assign createdIndex = createdIndex | plus:1 %}
  {% else %}
    // HTML for updatedPosts[updatedIndex]
    {% assign updatedIndex = updatedIndex | plus:1 %}
  {% endif %}

{% endfor %}

需要注意的一件事是,我不能直接比较date和lastUpdated,因为我得到了这个错误:comparison of Date with Time failed,所以我必须把它们都转换成字符串。

这感觉相当复杂,所以我可能会回到过去,用lastUpdated填充每个帖子以保持简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63780812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档