带有 "contains" 表达式的 Jekyll `where_exp` 过滤器

Jekyll `where_exp` filter with "contains" expression

我正在为我的 Jekyll 网站创建一个作者页面。在此页面上,我想显示该特定作者撰写的所有帖子。

我的帖子是这样的:

title: "Some title"
authors: [author1, author2]

为了保留作者列表,我使用了集合。

一位作者看起来像这样:

short: author1
name: "Author 1 Full Name"

现在 author1 我想找到该作者的所有文章。我正在尝试为此使用 where_exp

{% assign articles = site.posts | where_exp: "authors", "authors contains page.short" %}

在这种情况下,page.short 包含 author1

但是列表 articles 是空的。您知道可能是什么问题吗?

你的过滤器语法有问题,可以参考使用方法in the documentation

你可以看到它被用作

{{ site.members | where_exp:"item", "item.projects contains 'foo'" }}

但是在您的尝试中,您没有定义 contains 查询的项目字段。

代码中

where_exp:"item", "item.projects contains 'foo'"

我们确实从数组中定义了一个 item,然后我们希望这个 item 有一个字段 projects;我们只想要包含项目 foo

的那个

在您的代码中

where_exp: "authors", "authors contains page.short" 

您是说 item 实际上称为 authors 并且您希望项目 本身 包含 page.short

更正确的方法是:

site.posts | where_exp: "post", "post.authors contains page.short"

因为你的数组 site.postsitems 实际上是 posts,所以它的 itempost.
然后,在 post 上,您期望字段 authors,因此 post.authors 包含特定字符串。