我可以有条件地显示某些Jekyll数据文件吗?

时间:2015-09-08 18:19:58

标签: jekyll

我有一个使用此课程的课程列表.yml

root_path

我用以下列出课程:

- title: Basic Residential HSI Install
  code: OSP0000111
  description: Install and Repair residential and business class POTS, HSI, and Video services
  newhire: true
  skillset: Copper
  jobtype: CST
  advanced: 

- title: PTA Testing Overview
  code: OSP0000114
  description: Teaches the technician how to close out a T1 test using the PTA system
  newhire: false
  skillset: Systems
  jobtype: CO
  advanced: no

- title: Technician Billing 
  code: OSP0000112
  description: Teaches the technician how to properly  bill the customer
  newhire: false
  skillset: Copper
  jobtype: CST
  advanced: yes

- title: Central Office Jumper
  code: OSP0000113
  description: Teaches the technician how to run jumpers
  newhire: true
  skillset: Copper
  jobtype: CO
  advanced: no

这很好用。但是,现在我想使用相同的数据文件创建一个列表,只有那些newhire变量为" true"

的课程。

我还没有理解任何以前解释如何执行此操作的文档。我尝试过where子句并过滤无济于事。

有什么想法吗?

每个https://jekyllrb.com/docs/templates/网站,我尝试添加where子句:

<ul>
{% for teds in site.data.courses %}
  <li>  Course Title: {{ teds.title }} <br />
        Course Code: {{ teds.code}} <br />
       Course Description: {{ teds.description }}
  </li>
{% endfor %}
</ul>

我刷新了页面,没有任何反应。我得到了同一页,列出了所有课程。没有过滤。我甚至重新启动了Jekyll服务器。相同的结果,没有过滤。

Jekyll服务器注意到没有错误。

根据您的回答,我更改了数据文件变量。 2ea&#34; 0&#34;,2ea&#34; 1&#39; s&#34;。然后我将html文件更改为:

<ul>
{% for new in site.data.courses | where "newhire","true" %}
  <li>  Course Title: {{ new.title }} <br />
        Course Code: {{ new.code }}  |  Job Type: {{ new.jobtype }} <br />
       Description: {{ new.description }} <br />
       <a href="{{ site.baseurl }}schedule.xlsx " target="_blank"> Schedule </a>
       <hr />
  </li>
{% endfor %}
</ul>

Jekyll服务器报告没有错误,但是当我刷新页面时,它根本没有显示任何数据。没有4个标题的列表,也没有2个喜欢我希望,只是网页。 :(

UGGH,我在晚餐后回顾时看到了我的错误:)

以下是有效的:

<ul>
{% assign teds = site.data.courses | where: 'newhire', 1 | sort: 'title' %}
{% for teds in courses %}
  <li>  Course Title: {{ teds.title }} <br />
        Course Code: {{ teds.code }} <br />
       Course Description: {{ teds.description }}
  </li>
{% endfor %}
</ul>

2 个答案:

答案 0 :(得分:1)

UGGH,我在晚餐后看到了我的错误:)明确的头脑有帮助!

正确的代码是:

<ul>
{% assign new = site.data.courses | where: 'newhire', 1 | sort: 'title' %}
{% for teds in new %}
  <li>  Course Title: {{ teds.title }} <br />
        Course Code: {{ teds.code }} <br />
       Course Description: {{ teds.description }}
  </li>
{% endfor %}
</ul>

非常感谢,Christian !!

JOE

答案 1 :(得分:0)

我可以通过my blog向您展示一个工作示例,我正在做类似您想要实现的事情。
认为我在开始时尝试使用true/false,但我没有让它工作,所以我使用0/1代替。 < / p>

以下是示例:

我有a data file with projects。每个项目都有一个sidebar属性,该属性为0或1:

- name: Bitbucket Backup
  url: /bitbucket-backup/
  logo: /php/cache/img/bitbucket-backup-logo128x128.png
  desc: A backup tool which clones all your Bitbucket repositories to your local machine
  sidebar: 1

在我的布局文件中,我有一个侧边栏,我只想用sidebar == 1列出这些项目。 I'm doing this with the following code

{% assign projects = site.data.projects | where: 'sidebar', 1 | sort: 'name' %}
{% for project in projects %}
<li><a href="{{ project.url }}" rel="tooltip" title="{{ project.desc }}">{{ project.name }}</a></li>
{% endfor %}

请注意,当我将带有where子句的行分配给变量(projects)然后循环变量时,它才适用于我。

以下工作:

{% for project in site.data.projects | where: 'sidebar', 1 | sort: 'name' %}
<li><a href="{{ project.url }}" rel="tooltip" title="{{ project.desc }}">{{ project.name }}</a></li>
{% endfor %}