我需要帮助使用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
感谢任何帮助,如果解决了比特币会给小费提示!
答案 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>