我在一个集合中有一组结构化的页面,结构看起来像这样:
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过滤器获取元数据?我有一堆页面,所以循环遍历它们是非常低效的......
答案 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