0

I'm making an "archive" if you will of all the posts on my site. I want to gather all the posts from a year. This code works fine, however; I want it to generate the <h2>2014</h2> when needed.

Basically, if year is 2014, render <h2>2014</h2> and make a <ul> of all the posts (with category of journal) from that given year.

If anyone knows of any .rb plugins that archive by year, let me know!

<h2>2014</h2>
{% for post in site.categories.journal %}
    {% capture year %}{{post.date | date: "%Y"}}{% endcapture %}
        {% if year == "2014" %}
                <ul class="posts-in-year">
                    <li><p><a href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a> &mdash; {{ post.date | date: "%B %d" }}</p></li>
                </ul>
        {% endif %}
{% endfor %}
Matthew
  • 2,158
  • 7
  • 30
  • 52

3 Answers3

0

What about:

{% for post in site.categories.journal %}
    {% capture year %}{{post.date | date: "%Y"}}{% endcapture %}
        {% if year == "2014" %}
                <h2>{% year %}</h2>
                <ul class="posts-in-year">
                    <li><p><a href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a> &mdash; {{ post.date | date: "%B %d" }}</p></li>
                </ul>
        {% endif %}
{% endfor %}
Martin
  • 7,634
  • 1
  • 20
  • 23
0

You can add a year field in your posts and then

<h2>2014</h2>
<ul class="posts-in-year">
  {% for post in (site.categories.journal | where: "year","2014" | sort: 'date') %}
    <li><p><a href="{{ post.url | prepend: site.baseurl }}">
      {{ post.title }}</a> &mdash; {{ post.date | date: "%B %d" }}</p>
    </li>
  {% endfor %}
</ul>
xlembouras
  • 8,215
  • 4
  • 33
  • 42
0
<h2>2014</h2>
    <ul class="posts-in-year">
    {% for post in site.categories.journal %}
     {% capture year %}{{post.date | date: "%Y"}}{% endcapture %}
        {% if year == "2014" %}
            <li><p><a href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a> &mdash; {{ post.date | date: "%B %d" }}</p></li>
        {% endif %}
{% endfor %}

Matthew
  • 2,158
  • 7
  • 30
  • 52