Filtering uncategorized posts with Jekyll
I’m using Jekyll to generate this blog. It’s pretty cool once you get the hang of it. Yesterday I had a problem stackoverflow couldn’t solve: I wanted to filter my blog posts to keep only the ones who weren’t categorized.
I had to write a really simple plugin to do this. Here it is:
module Jekyll
module UncategorizedFilter
# Returns back all categories related to a primary category
# e.g. "blog" or "questions"
def filter_categorized_posts(posts)
filtered = []
for post in posts
if post.categories == []
filtered.push(post)
end
end
return filtered
end
end
end
Liquid::Template.register_filter(Jekyll::UncategorizedFilter)To use this plugin, save the code in a folder called _plugins in your jekyll directory. Here’s how to use it from a template:
{% assign uncategorized_posts = site.posts | filter_categorized_posts %}
{% for post in uncategorized_posts %}
<li>
<a href="{{site.baseurl}}{{ post.url }}">{{ post.title }}</a>
</li>
{% endfor %}Hope this helps.