Skip to content

Instantly share code, notes, and snippets.

@Lax
Forked from enaeher/tiered_archives.rb
Created June 16, 2014 07:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lax/13a410f99ea2ce2b0774 to your computer and use it in GitHub Desktop.
Save Lax/13a410f99ea2ce2b0774 to your computer and use it in GitHub Desktop.
# 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
data = site_payload_without_tiered_archives
data['site']['years'] = TieredArchives::find_years(self.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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment