如何使用"其中"过滤

时间:2017-02-04 19:24:46

标签: jekyll

我在一个集合中有一组结构化的页面,结构看起来像这样:

chapter1
   section1
   section2
   section3
chapter2
   section1
   section2
   section3
chapter3
   section1
   section2
   section3

每个页面都是一个单独的页面,可以呈现自己的永久链接。

说我想建立第3章/第1节的链接,我该怎么做?我想使用Liquid where过滤器,但这似乎为我提供了内容页面,而不是元数据。

{% assign section_post = site.chapters | where:"url","chapter3/section1" %}
{{ section_post }}

这为我提供了正确的页面,但不是正确的内容。如果我在我的布局中写这个,我什么也得不到:

<a href="{{ section_post.permalink }}">{{ section_post.title }}</a>

我做错了什么?如何使用where过滤器获取元数据?我有一堆页面,所以循环遍历它们是非常低效的......

1 个答案:

答案 0 :(得分:1)

问题是,where表达式会在给定特定条件的情况下返回数组中的所有对象

[#<Jekyll::Document _chapters/chapter3/section1 collection=chapters>] 

在这种情况下,您希望此对象列表只返回单个项目,因此我们可以使用first liquid 标记选择该项目(返回数组的第一个元素) )。

  {% assign ch3s1 = site.chapters |
  where:"id","/chapters/chapter3/section1" | first%} 

  title: {{ch3s1.title}} 
  <br>
  url: {{ch3s1.url}}

将输出所需的部分:

  title: Chapter 3 section 1
  url: /chapters/chapter3/section1