首页 文章

在Jekyll _data中创建分类?

提问于
浏览
3

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

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

让我试着解释一下 .

Twitter在土耳其和伊朗受阻,所以我从这开始(_data中的networks.yml):

- network: Twitter

这是我被卡住的地方 . 我不明白的是,如果我想像这样“标记”或“分类”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 回答

  • 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也有助于进一步优化 .


    这是我的“完整”解决方案:

    我在_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>
    

相关问题