Yaml Jekyll/Liquid-使用导航项目文件生成(ul,li)列表,并根据页面首页内容获取项目属性
我正在使用YAML/Jekyll/Liquid生成一个页面,我有一个文件taxonomy.yml,其中包含项目的“类型”(这与category不同)和项目的属性 下面是一个例子:Yaml Jekyll/Liquid-使用导航项目文件生成(ul,li)列表,并根据页面首页内容获取项目属性,yaml,jekyll,liquid,Yaml,Jekyll,Liquid,我正在使用YAML/Jekyll/Liquid生成一个页面,我有一个文件taxonomy.yml,其中包含项目的“类型”(这与category不同)和项目的属性 下面是一个例子: fruits: - apple: color: red size: medium native: true - grape: color: green size: small native: false 现在我想以两种方式使用这些列表 ul/li类型的列表,应如下所示:
fruits:
- apple:
color: red
size: medium
native: true
- grape:
color: green
size: small
native: false
现在我想以两种方式使用这些列表
- 苹果是红色的和中等大小的
- 葡萄呈绿色和小大小
<ul>
{% for item in site.data.taxonomy.fruits %}
<li>??? is {{ item.color}} and size {{ item.size }}</li>
{% endfor %}
</ul>
然后基于水果(本例中为苹果),我希望能够将其放在post页面中,如下所示:
粉红女士
这篇文章是关于一种中号水果的
关于粉红女士的一切
废话废话
要做到这一点,我必须转到taxonomy.yml,在“水果”列表中查找“apple”(从前面的内容),然后读取“size”属性(本例中为中等)以打印到文章中
(假设值是唯一的,因此文件中只有一个“apple”,并且始终指定“size”)
这就是我所拥有的:
<h1>{{ page.title }}</h1>
<p>This article is about a {{ site.data.taxonomy.fruits[page.fruit].size }} fruit.</p>
{{page.title}
这篇文章是关于{{site.data.taxonomy.fruits[page.fruit].size}}水果的
我想我一定没有理解关于使用层次结构的一些细节,因为我相信这个想法基本上是存在的,但是缺少一些细节。。。请帮忙
我认为我的误解可能与“列表项”和“键值对”之间的区别有某种联系。我理解这些摘要,但在这里难以应用它们。您可能在这里误用了YAML序列。您的YAML:
水果:
-苹果公司:
颜色:红色
尺码:中等
本地人:是的
-葡萄:
颜色:绿色
尺寸:小
本地人:错
表示fruits
是一个列表,其中每个列表项都是具有单个键值对的映射;键是apple
或grape
,值是包含其属性的映射。您可能需要执行以下任一操作:
选项1:不要使用序列。
水果:
苹果公司:
颜色:红色
尺码:中等
本地人:是的
葡萄:
颜色:绿色
尺寸:小
本地人:错
然后可以迭代映射,其中item
将是键和值的元组:
{site.data.taxonomy.fruits%中项目的%s}
- {{item[0]}是{{item[1]。颜色}和大小{{item[1]。大小}
{%endfor%}
选项2:在属性中集成名称
也许你真的希望水果
成为一个序列。然后,您可能应该将这些名称合并到属性列表中,如下所示:
水果:
-名称:苹果
颜色:红色
尺码:中等
本地人:是的
-品名:葡萄
颜色:绿色
尺寸:小
本地人:错
现在,您可以迭代该序列,item
将直接包含属性列表:
{site.data.taxonomy.fruits%中项目的%s}
- {{item.name}是{{item.color}和大小{{item.size}
{%endfor%}
是的,但是如果我真的想保留原来的YAML呢
{site.data.taxonomy.fruits%中项目的%s}
{项目%中kvpair的%
- {{kvpair[0]}是{kvpair[1]。颜色}和大小{{kvpair[1]。大小}
{%endfor%}
{%endfor%}
<h1>{{ page.title }}</h1>
<p>This article is about a {{ site.data.taxonomy.fruits[page.fruit].size }} fruit.</p>