From dc214056449119b29ad7b19b8d47e81b343ff453 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sun, 28 Apr 2013 19:54:45 +0200 Subject: Updated theme and templates Updated to pelican 3.2 --- plugins/related_posts/__init__.py | 1 + plugins/related_posts/related_posts.py | 36 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 plugins/related_posts/__init__.py create mode 100644 plugins/related_posts/related_posts.py (limited to 'plugins') diff --git a/plugins/related_posts/__init__.py b/plugins/related_posts/__init__.py new file mode 100644 index 0000000..c78861e --- /dev/null +++ b/plugins/related_posts/__init__.py @@ -0,0 +1 @@ +from .related_posts import * diff --git a/plugins/related_posts/related_posts.py b/plugins/related_posts/related_posts.py new file mode 100644 index 0000000..4000e03 --- /dev/null +++ b/plugins/related_posts/related_posts.py @@ -0,0 +1,36 @@ +""" +Related posts plugin for Pelican +================================ + +Adds related_posts variable to article's context +""" + +from pelican import signals +from collections import Counter + + +def add_related_posts(generator): + # get the max number of entries from settings + # or fall back to default (5) + numentries = generator.settings.get('RELATED_POSTS_MAX', 5) + + for article in generator.articles: + # no tag, no relation + if not hasattr(article, 'tags'): + continue + + # score = number of common tags + scores = Counter() + for tag in article.tags: + scores += Counter(generator.tags[tag]) + + # remove itself + scores.pop(article) + + article.related_posts = [other for other, count + in scores.most_common(numentries)] + + +def register(): + signals.article_generator_finalized.connect(add_related_posts) + -- cgit v1.2.3