和/或 Jekyll 上的 where_exp 表达式

Mat*_*zer 6 operators filter jekyll

我正在尝试where_exp使用or运算符根据两个类别过滤 Jekyll 页面:

{% assign sortedPages = site.pages | sort:"date" | reverse | where_exp:"page","page.categories contains 'design-pattern'" %}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

预期 end_of_string 但找到管道

ar or/and算子真的支持吗?我不知道如何使用where_exp我的代码片段中所示的方法来过滤页面。

Mat*_*zer 7

我已经设法通过一些变通方法解决了我的问题......这不是一个非常优雅的解决方案,但因为 Jekyll 并不是要创建实际的软件架构......现在,它可以完美地工作:

{% assign patterns = "" | split,"" %}

{% for page in site.pages %}
{% if page.categories contains "design-pattern" or page.categories contains "anti-pattern" %}
{% assign patterns = patterns | push:page %}
{% endif %}
{% endfor %}

{% assign sortedPages = patterns | sort:"date" | reverse %}
Run Code Online (Sandbox Code Playgroud)
  1. 我创建了一个空数组。
  2. 我遍历所有页面,并按两种可能的类别过滤它们。
  3. 我推送满足整个条件的页面。
  4. 一旦我得到过滤后的页面数组,我就会对它进行排序和反转。