首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >和/或在Jekyll上的where_exp表达式上

和/或在Jekyll上的where_exp表达式上
EN

Stack Overflow用户
提问于 2017-03-10 16:12:08
回答 2查看 3.2K关注 0票数 7

我试图使用where_exp根据两个类别使用or操作符过滤Jekyll页面:

代码语言:javascript
复制
{% assign sortedPages = site.pages | sort:"date" | reverse | where_exp:"page","page.categories contains 'design-pattern'" %}

但我发现了一个错误:

期望end_of_string但找到管道

Ar or/and运算符真的支持吗?我不知道如何使用where_exp过滤页面,如我的代码片段所示。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-10 21:23:38

我设法解决了我的问题.这不是一个非常优雅的解决方案,但因为Jekyll并不是要创建实际的软件架构.就目前而言,它运行得完美无缺:

代码语言:javascript
复制
{% 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 %}
  1. 我创建一个空数组。
  2. 我循环遍历所有页面,并按两种可能的类别对它们进行过滤。
  3. 我推送满足整个条件的页面。
  4. 一旦我得到过滤后的页面数组,我就会对其进行排序和反转。
票数 8
EN

Stack Overflow用户

发布于 2020-04-01 23:00:45

我无法复制您的原始问题中包含的错误消息。但是,就基于多个条件的过滤而言,支持。你也可以把你所有的过滤器放在一起。其结果是代码更加清晰。

示例

如果要设置一个名为"sortedPages“的变量,它等于"site.pages",但需要使用以下过滤器:

  • 按日期排序
  • 倒序排序
  • 只有当页面将design-pattern和/或anti-pattern作为类别时,才包括它

他们可以通过以下一条线来实现这一点:

代码语言:javascript
复制
{% assign sortedPages = site.pages | sort:"date" | reverse | where_exp: "item", "item.categories contains 'design-pattern' or item.categories contains 'anti-pattern'" %}

回答为多行

还支持将语句拆分到多行。这样做有时可以提高可读性:

代码语言:javascript
复制
{% 
    assign sortedPages = site.pages 
    | sort:"date" 
    | reverse 
    | where_exp: "item", "item.categories contains 'design-pattern' or item.categories contains 'anti-pattern'" 
%}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42722902

复制
相关文章

相似问题

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