Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Yaml Jekyll/Liquid-使用导航项目文件生成(ul,li)列表,并根据页面首页内容获取项目属性_Yaml_Jekyll_Liquid - Fatal编程技术网

Yaml Jekyll/Liquid-使用导航项目文件生成(ul,li)列表,并根据页面首页内容获取项目属性

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类型的列表,应如下所示:

我正在使用YAML/Jekyll/Liquid生成一个页面,我有一个文件taxonomy.yml,其中包含项目的“类型”(这与category不同)和项目的属性

下面是一个例子:

fruits:
- apple:
    color: red
    size: medium
    native: true
- grape:
    color: green
    size: small
    native: false
现在我想以两种方式使用这些列表

  • ul/li类型的列表,应如下所示:
  • 水果种类

    • 苹果是红色的和中等大小的
    • 葡萄呈绿色大小
    这是我到目前为止得到的,但没有输出任何内容:

    <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>