added unique filtering and config limit param

I hacked some code from other modules and some quick googling, first time with py so this may need to be cleaned up.

The functionality is to have a config var in pythonconfig.py and to remove the duplicates `sorted(set())`
This commit is contained in:
Eric 2013-01-24 19:57:22 -06:00 committed by Alexis Métaireau
commit 11bdb437d2

View file

@ -13,14 +13,21 @@ To enable, add
from pelican.plugins import related_posts from pelican.plugins import related_posts
PLUGINS = [related_posts] PLUGINS = [related_posts]
to your settings's file pelicanconf.py . to your pelicanconf.py.
Control the number of entries with in the config file with:
RELATED_POSTS = {
'numentries': 6,
}
Usage Usage
----- -----
{% if article.related_posts %} {% if article.related_posts %}
<ul> <ul>
{% for related_post in article.related_posts %} {% for related_post in article.related_posts %}
<li>{{ related_post }}</li> <li><a href="{{ related_post.url }}">{{ related_post.title }}</a></li>
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
@ -40,12 +47,24 @@ def add_related_posts(generator, metadata):
if len(related_posts) < 1: if len(related_posts) < 1:
return return
metadata["related_posts"] = sorted(set(related_posts))
relation_score = dict(list(zip(set(related_posts), list(map(related_posts.count, relation_score = dict(list(zip(set(related_posts), list(map(related_posts.count,
set(related_posts)))))) set(related_posts))))))
ranked_related = sorted(relation_score, key=relation_score.get) ranked_related = sorted(relation_score, key=relation_score.get)
#Load the confg file and get the number of entries specified there
settings = generator.settings
config = settings.get('RELATED_POSTS', {})
metadata["related_posts"] = ranked_related[:5] #check if the related_posts var is set in the pythonconfig.py
if not isinstance(config, dict):
info("realted_links plugin: Using default number of related links ("+numentries+")")
else:
numentries = config.get('numentries', 5)
metadata["related_posts"] = ranked_related[:numentries]
def register(): def register():