我是Jekyll的新手,正在为我的一个项目创建一个文档网站。我试图创建一个侧边栏以显示文档中的当前页面。为了存储文档的结构,我在_data
文件夹中创建了一个名为subsections.yml
的文件。这是文件:
- title: Quickstart # Section
data:
- Get started # Subsections
- The basics
- title: API documentation # Another section with subsections
data:
- Introduction
以下是html模板文件的摘录,该文件将用于文档中的页面。 (液体模板引擎):
{% assign subsecs = site.data.subsections | where: 'title', page.section %}
上面的代码创建了一个名为subsecs
的变量,该变量是通过读取subsections.yml
并过滤掉文档页面所涉及的部分中的数据而创建的。因此,如果页面的部分是Quickstart
,则subsecs
变量将包含Quickstart
的{{1}}部分的所有数据。我用subsecitons.yml
进行了测试,并通过输出:
{{ subsecs }}
但是,当我尝试从该对象访问某个属性(例如标题)时:
{"title"=>"Quickstart", "data"=>["Get started", "The basics"]}
什么都不返回。为什么会发生这种情况,我该如何访问液体中的属性方法?语法看起来正确,但是当我尝试时,将呈现一个空字符串。
我尝试查看临时文档,但除了{{ subsecs.title }}
之外,什么都没找到,由于某种原因,它不起作用。我也看过类似的问题。
答案 0 :(得分:1)
where
过滤器正在返回一个数组。
{% assign subsecs = site.data.subsections | where: 'title', page.section %}
{{ subsecs | inspect }}
inspect
过滤器打印=> [{"title"=>"Quickstart", "data"=>["Get started", "The basics"]}]
中的括号表示一个数组。
您可以:
{% assign subsecs = site.data.subsections | where: 'title', page.section | first %}
{{ subsecs | inspect }}
first
过滤器提取数组的第一个元素。
inspect
过滤器现在可以打印=> {"title"=>"Quickstart", "data"=>["Get started", "The basics"]}
您现在可以访问对象的属性,例如subsecs.title
。