在Jekyll _data中创建分类?

时间:2015-07-10 14:38:34

标签: yaml jekyll

我需要帮助使用Jekyll中的_data来生成内容。

假设我想创建一个显示阻止Twitter和Facebook的国家/地区的目录。我理解如何查询_data文件夹但是如何在_data .yml中创建类似类别的东西并查询该数据?

让我试着解释一下。

Twitter在土耳其被封锁伊朗所以我从这开始(_data中的networks.yml):

- network: Twitter

这是我被卡住的地方。我不明白的是,如果我想要"标记"或"分类"推特喜欢这样:

- network: Twitter
  blockedcountries: [Turkey, Iran, Iraq]

- network: Facebook
  blockedcountries: [Iraq, Turkey]

然后,我想要在mysite.com/turkey/上显示可以显示标有土耳其的网络的网页。像这样:

{% for network in site.data.networks %}
{% if network.blockedcountries == Turkey %}
        <li>{{ network.network }} is blocked in Turkey</li>
{% endif %}
{% endfor %}`

Which would display: 
 - Twitter is blocked in Turkey
 - Facebook is blocked in Turkey

感谢任何帮助,如果解决了比特币会给小费提示!

1 个答案:

答案 0 :(得分:3)

你的YAML是对的。问题似乎出现在你的if语句中:

{% if network.blockedcountries == Turkey %}

network.blockedcountries是一个数组(列表),因此你的if语句必须是这样的:

{% if network.blockedcountries contains "Turkey" %}
  <li>{{ network.network }} is blocked in Turkey</li>
{% endif %}

Jekyll正在使用Liquid标记语言作为其模板。您可以阅读有关其可能性here的更多信息。也许liquid case statement也有助于进一步优化。

这是我的#34;完整&#34;溶液:

我的数据在_data / networks.yml

- name: Twitter
  blockedcountries: [Turkey, Iraq, Iran]
- name: Facebook
  blockedcountries: [Turkey, Iraq]

我在index.html中的液体模板

<ul>
  {% for network in site.data.networks %}
    {% if network.blockedcountries contains "Turkey" %}
      <li>{{ network.name }} is blocked in Turkey!</li>
    {% endif %}
  {% endfor %}
</ul>