从Jekyll集合/数据源返回唯一值

时间:2015-11-01 21:17:08

标签: ruby jekyll github-pages

我在Jekyll网站的1000文件夹中有一个JSON数据源,如下所示:

_data

我想列出属性的唯一值。以下返回年份列表;我只喜欢独特的岁月。

{
  "1": {
    "name": "March",
    "year": "2014"
  },
  "2": {
    "name": "May",
    "year": "2013"
  },
    ....
  }

试图分配变量,以便我可以使用here给出的但没有运气的东西,而且我不确定它是否会在Jekyll中起作用。

2 个答案:

答案 0 :(得分:3)

您似乎正在尝试按年度对播放列表进行分组。

<强> _data / playlists.json

[
  {
    "name": "March",
    "year": "2014"
  },
  {
    "name": "May",
    "year": "2013"
  },
  {
    "name": "December",
    "year": "2013"
  }
]

请注意,我们这里有一个哈希数组。

现在,您可以按年份对播放列表进行分组:

{% comment %} ++++ Group playlists by year ++++ {% endcomment %}
{% assign grouped = site.data.playlists | group_by: "year" %}

<ul>
{% for year in grouped %}
  <li>
    {{ year.name }}
    <ul>
    {% for item in year.items %}
        <li>{{ item.name }}</li>
    {% endfor %}
    </ul>
  </li>
{% endfor %}
</ul>

答案 1 :(得分:0)

您应该只处理一次相同的元素,这些代码可能有效:

<ul>
{% assign s_year = null %}
{% assign t_year = null %}
{% for playlist in site.data.playlists %}
{% capture t_year %}{{playlist[1].year}}{% endcapture %}
{% if t_year == s_year %}{% else %}
<li>
{{ t_year }}
</li>
{% endif %}
{% capture s_year %}{{ t_year }}{% endcapture %}
{% endfor %}
</ul>