Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Collections 从markdown访问jekyll集合属性_Collections_Attributes_Jekyll_Liquid - Fatal编程技术网

Collections 从markdown访问jekyll集合属性

Collections 从markdown访问jekyll集合属性,collections,attributes,jekyll,liquid,Collections,Attributes,Jekyll,Liquid,我有一套代表我所教课程的藏书。它们中的每一个都有一些与该课程相关联的独特属性。例如: # Collections, which are CS courses for me collections: cs1: output: true title: "CS1" permalink: /teaching/cs1/:path/ TAemail: "cs1@school.edu" cs2: output: true

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

# 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,我想使用的是:

[Teaching team email](mailto:{{ site.cs2.TAemail }}) ...
然而,这不起作用。如果我将
TAemail
名称放入集合中的
Logistics.md
文件中,并对其进行某种查找,如:

{% for file in site.cs2 %}
  {% if file.type == 'Info' %}
      {% if file.subtype == 'Logistics' %}
| | email: | [ Team ](mailto: {{ file.TAemail }}) |  
      {% endif %}
  {% endif %}
{% endfor %}
它很好用。这看起来很尴尬,也不太像杰基尔


有什么想法吗?

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

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

e、 g


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

e、 g


你的意思是
[教学团队电子邮件](mailto:{{site.cs2.TAemail}})
?是的,对不起,抄写错误。我会纠正这个问题的。哇!第一个答案非常有效!第二行很酷,但我最终得到了八行“发送电子邮件到:…”,集合定义中的每个属性行对应一行。非常非常感谢!我已经为此奋斗了好几个小时了。ccp@user1055983第二个答案只是一个示例,如果您正在呈现集合中的项目,并且希望显示与collectionOK关联的电子邮件,那么您可以进行调整,谢谢您的解释,非常感谢您的回答!这对我来说是一个巨大的时间损失。
{% assign cs_collection = site.collections | where: "label", "cs1" | first %}
Send e-mail to: {{ cs_collection.TAemail }}
{% 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 %}