Jekyll - 创建按标签排序的列表索引

时间:2014-08-14 13:03:19

标签: list tags markdown jekyll

我想在jekyll中创建所有标签和相应帖子的列表索引。

我的第一个方法,每个标签的for循环:

    <h4>FRUITY</h4>
    {% for post in site.tags.fruity %}  
        <ul class="posts">
            <li>
                <a href="{{ post.url }}">{{ post.title }}</a>        
            </li>
        </ul>
    {% endfor %}

    <h4>SWEET</h4>
    {% for post in site.tags.sweet %}
        <ul class="posts">
            <li>
                <a href="{{ post.url }}">{{ post.title }}</a>        
            </li>
        </ul>
    {% endfor %}
    ...

这个工作,但我必须为每个新标签手动创建一个新的for循环。

我的第二种方法,一个循环来自动执行此步骤,所以我不必担心新的或删除的标签:

{% for tag in site.tags %}
  <div class="medium-6 large-3 columns list-view-all">

    <h4>{{ tag | first | upcase}}</h4>
    {% for post in site.posts contains tag %}        
        <ul class="posts">
            <li>
                <a href="{{ post.url }}">{{ post.title }}</a>        
            </li>
        </ul>
    {% endfor %}
  </div>    
{% endfor %}

第一部分有效,每个标签都成为标题。 在内部for循环包含任何标记的所有帖子都列出。所以每个标签的列表都是相同的。

问题: 如何为每个标签制作一个列表,只有与相应标签对应的帖子?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

{% for tag in site.tags %}
  <div class="medium-6 large-3 columns list-view-all">

  {% assign currentTag = tag | first %}

    <h4>{{ currentTag | upcase}}</h4>

    {% for post in site.posts %}
      {% if post.tags contains currentTag %}
      <ul class="posts">
        <li>
            <a href="{{ post.url }}">{{ post.title }}</a>
        </li>
      </ul>
      {% endif %}
    {% endfor %}

  </div>
{% endfor %}