无法访问液体对象属性(Jekyll)

时间:2020-06-06 23:03:22

标签: yaml jekyll liquid

我是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 }} 之外,什么都没找到,由于某种原因,它不起作用。我也看过类似的问题。

1 个答案:

答案 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

相关问题