【问题标题】:Jekyll Liquid Array ID Not WorkingJekyll Liquid Array ID 不工作
【发布时间】:2018-03-10 23:01:39
【问题描述】:

我的_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 文件内容的其他方法并且这些方法有效,因此它似乎不是数据文件或站点本身的问题,而是使用 [ ] 数组 id Liquid 语法.

【问题讨论】:

    标签: jekyll liquid


    【解决方案1】:

    您似乎误解了哈希结构的 [] 表示法。 我将首先向您介绍[] 应该如何工作..

    稍微扩展您的data.csv

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

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

    {{ site.data.data | inspect }}
    

    在构建网站时,您会看到生成的对象只是一个哈希数组

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

    既然您知道[] 是如何处理数据散列的,那么让我们来看看解决方案吧。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      相关资源
      最近更新 更多