首页 文章

Jekyll液体阵列ID不起作用

提问于
浏览
0

我的 _data 文件夹中有一个CSV文件,我正在尝试指定要在我的Front Matter中访问的CSV行,然后根据Front Matter中指定的行从CSV返回特定列 .

这是CSV文件:

name,description
Dallas,Big City in Texas

这是我的 index.html 文件的内容:

---
city: "Dallas"
---

{{ site.data.data[page.city].description }}

根据关于使用数据文件的Jekyll Docs页面,我应该能够使用这种语法以这种方式访问数据文件,但编译后的html文件不包含任何数据 .

我已经测试了访问CSV文件内容的其他方法以及那些工作,因此它似乎不是数据文件或网站本身的问题,而是使用 [ ] array id Liquid语法 .

1 回答

  • 0

    看起来你误解了哈希结构的 [] 表示法 . 我将首先介绍 [] 应该如何工作..

    稍微扩展你的 data.csv

    name,description
    Dallas,Big City in Texas
    Houston,Another City in Texas
    

    并“检查”从上述CSV文件中获取的数据对象,

    {{ site.data.data | inspect }}
    

    在构建网站时,您会看到结果对象只是一个 Array of Hashes

    <p>
      [
        {"name"=&gt;"Dallas", "description"=&gt;"Big City in Texas"}, 
        {"name"=&gt;"Houston", "description"=&gt;"Another City in Texas"}
      ]
    </p>
    

    这意味着您只能通过引用其索引号来访问单个哈希条目 .

    {{ site.data.data[0] }} 将为您提供第一个哈希值, {{ site.data.data[1] }} 将为您提供下一个哈希值 .

    因此 {{ site.data.data[0].description }} 将为您提供您期望获得的结果:

    <p>
      Big City in Texas
    </p>
    

    现在你知道 [] 如何用于数据哈希,让我们简单地了解解决方案 .

    要访问Array中的元素,可以简单地遍历Array对象并引用必要的条目:

    {% for entry in site.data.data %}
      <div>
        <span>{{ entry.name }}</span> : <span>{{ entry.description }}</span>
      </div>
    {% endfor %}
    

    会给你:

    <div>
      <span>Dallas</span>
      <span>Big City in Texas</span>
    </div>
    <div>
      <span>Houston</span>
      <span>Another City in Texas</span>
    </div>
    

相关问题