blob: 3994724a4058d1f1b36dc98b1d7f5ab7a00bc1bd [file] [log] [blame]
# A quick and dirty plugin for Jekyll by Eli Naeher
#
# This plugin creates a site.years template variable which allow you to
# group archive links by year and month.
#
# The structure of site.years is:
# site.years = 2001=>[[post1, post2...], [...]], 2002=>[...]
#
# Usage should look something like this:
# {% for year in site.years %}
# <h2>Year {{ year.first.first.date | date: "%Y" }}</h2>
# {% for month in year %}
# <h3>Month {{ month.first.date | date: "%B" }}</h3>
# {% for post in month %}
# <a href="{{ post.url">{{ post.title }}</a>
# {% endfor %}
# {% endfor %}
# {% endfor %}
class Jekyll::Site
alias :site_payload_without_tiered_archives :site_payload
def site_payload
if Jekyll::VERSION < '3.0.0'
posts = self.posts
else
posts = self.posts.docs
end
data = site_payload_without_tiered_archives
data['site']['years'] = TieredArchives::find_years(posts.reverse)
data
end
end
module TieredArchives
def self.find_years(posts)
posts.group_by {|post| post.date.year}.values.map {|year| year.group_by {|post| post.date.month}.values};
end
end