我正在重建我公司在Jekyll的当前站点,并尝试使用具有属性(YAML前端内容中的键/值对)的对象(集合中的文件)围绕内容模型设置结构.简单的概念性东西,旨在向我的团队展示有效的内容建模.
网站上被重用的任何内容都会成为一个对象,对象的类型由包含其文件的特定集合定义.因此,我有一个"服务"集合,用于公司提供的服务,"客户"集合,以及"人员"集合,每个人都有一个文件.
我遇到的问题是引用集合中的特定项目.例如,我希望我的帖子有作者.我已经使用_data找到了大量的解决方案,但我希望我的作者能够自动为每个人输出一个页面和集合.我已经能够获得_data来生成页面,但我无法控制列出项目的顺序,而对于集合,我有很多方法可以控制订单.
我目前的解决方案感觉很糟糕.我给每个人一个等于"firstname-lastname"的id,所以在YAML前面的事情中它会说id: steve-hickey
.然后我使用以下代码遍历网站上的每个人,并返回与帖子中指定的author-id匹配的任何人.
帖子布局模板:
--- layout: default ---{{ page.title }}
{% assign people = site.people | where:"id", page.author-id %} {% for person in people %}Written by {{ person.first-name }} {{ person.last-name }} on
{{ page.date | date: '%B %d, %Y' }}
{% endfor %}{{ content }}
帖子的正面事项:
--- title: User Offboarding layout: post nav-area: blog author-id: steve-hickey ---
来自人物集合的人员文件:
--- id: steve-hickey first-name: Steve last-name: Hickey job: User Experience Strategist & AUX Director layout: person nav-area: about portrait-url: ---
似乎应该有一种方法来基于它已经拥有的唯一属性(例如其名称或URL)来标识特定文件或对象.这样我就可以指向一个特定的对象而不是为了我必须编写的唯一属性来评估所有这些对象.但经过3天的搜索,我找不到一个好的答案.
如果人们在您的集合中是唯一的,{% assign author = site.people | where:"id", page.author-id %}
则返回包含一个元素的数组.要直接访问此元素,请执行以下操作:
{% assign author = site.people | where:"id", page.author-id | first %}
这会抓取您数组中的第一个(也是唯一的)元素.你现在{{ author.anykey }}
直接做.