Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Quick'n'dirty Jekyll plugin for sorted cycle

Jekyll sorted_for plugin

Quick'n'dirty Jekyll plugin for sorted cycle.


Copy sorted_for.rb to _plugins/ directory of your Jekyll site.


Instead of for in templates use sorted_for and add sort_by parameter with property you want to sort by. Also supports reversed parameter as the original for tag.

{% sorted_for node in site.pages reversed sort_by:weight %}
  {{ node.title }}
{% endsorted_for %}

To use custom sort property (eg. weight as in example above) add it to YAML Front Matter of your pages - see

module Jekyll
class SortedForTag < Liquid::For
def render(context)
sorted_collection = context[@collection_name].dup
sorted_collection.sort_by! { |i| i.to_liquid[@attributes['sort_by']] }
sorted_collection_name = "#{@collection_name}_sorted".sub('.', '_')
context[sorted_collection_name] = sorted_collection
@collection_name = sorted_collection_name
def end_tag
Liquid::Template.register_tag('sorted_for', Jekyll::SortedForTag)

This comment has been minimized.

Copy link

@mbland mbland commented Oct 1, 2012

Forked this as and added a few changes:

  • Add sorted_for_test
  • Allow sorted_for to handle arrays of primitives
  • Add sorted_keys_for tag to iterate over hash keys

This comment has been minimized.

Copy link

@ghost ghost commented Apr 4, 2013

Forked also as because I needed to gsub the sorted_collection_name in my case where I had more than one dot already in the collection name

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.