首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从markdown访问jekyll集合属性

从markdown访问jekyll集合属性
EN

Stack Overflow用户
提问于 2016-06-16 20:35:13
回答 1查看 725关注 0票数 2

我有一套代表我教的课程的集合。它们中的每一个都有一些与该课程相关的独特属性。例如:

代码语言:javascript
复制
# Collections, which are CS courses for me
collections:  
  cs1:  
    output: true  
    title:  "CS1"  
    permalink: /teaching/cs1/:path/  
    TAemail: "cs1@school.edu"  

  cs2:
    output: true  
    title:  "CS2"  
    permalink: /teaching/cs2/:path/  
    TAemail: "cs2@school.edu"  
   ...

在每个集合中,有一个Logistics.md文件应该显示该课程的电子邮件地址。例如,如果课程是cs2,我想使用的是:

代码语言:javascript
复制
[Teaching team email](mailto:{{ site.cs2.TAemail }}) ...

然而,这是行不通的。如果我将TAemail名称放在集合中的Logistics.md文件中,并对其执行某种查找,如:

代码语言:javascript
复制
{% for file in site.cs2 %}
  {% if file.type == 'Info' %}
      {% if file.subtype == 'Logistics' %}
| | email: | [ Team ](mailto: {{ file.TAemail }}) |  
      {% endif %}
  {% endif %}
{% endfor %}

效果很好。这看起来很尴尬,也不太像杰基尔。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-17 02:29:46

{{ site.cs2.TAemail }}无法工作,因为site.cs2是一个包含集合项的数组,因此无法访问指定的元数据,因为它不是数组的属性。

访问集合元数据的方法是通过site.collections

例如:

代码语言:javascript
复制
{% assign cs_collection = site.collections | where: "label", "cs1" | first %}
Send e-mail to: {{ cs_collection.TAemail }}

顺便说一句,集合的每一项都包含一个名为collection的属性,该属性具有它所属的集合的名称,因此您可以基于该项动态查询集合,而不必在where过滤器中硬编码集合名称。

例如:

代码语言:javascript
复制
{% for item in site.cs1 %}
  {% assign this_collection = item.collection %}

  {% assign cs_collection = site.collections | where: "label", this_collection | first %}
  Send e-mail to: {{ cs_collection.TAemail }}
{% endfor %}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37868892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档