|
@@ -6,7 +6,6 @@ Neighbor Articles Plugin for Pelican
|
|
|
This plugin adds ``next_article`` (newer) and ``prev_article`` (older)
|
|
|
variables to the article's context
|
|
|
"""
|
|
|
-
|
|
|
from pelican import signals
|
|
|
|
|
|
def iter3(seq):
|
|
@@ -26,14 +25,33 @@ def get_translation(article, prefered_language):
|
|
|
return translation
|
|
|
return article
|
|
|
|
|
|
-def neighbors(generator):
|
|
|
- for nxt, cur, prv in iter3(generator.articles):
|
|
|
- cur.next_article = nxt
|
|
|
- cur.prev_article = prv
|
|
|
+def set_neighbors(articles, next_name, prev_name):
|
|
|
+ for nxt, cur, prv in iter3(articles):
|
|
|
+ exec("cur.{} = nxt".format(next_name))
|
|
|
+ exec("cur.{} = prv".format(prev_name))
|
|
|
|
|
|
for translation in cur.translations:
|
|
|
- translation.next_article = get_translation(nxt, translation.lang)
|
|
|
- translation.prev_article = get_translation(prv, translation.lang)
|
|
|
+ exec(
|
|
|
+ "translation.{} = get_translation(nxt, translation.lang)".format(
|
|
|
+ next_name))
|
|
|
+ exec(
|
|
|
+ "translation.{} = get_translation(prv, translation.lang)".format(
|
|
|
+ prev_name))
|
|
|
+
|
|
|
+def neighbors(generator):
|
|
|
+ set_neighbors(generator.articles, 'next_article', 'prev_article')
|
|
|
+
|
|
|
+ for category, articles in generator.categories:
|
|
|
+ articles.sort(key=(lambda x: x.date), reverse=(True))
|
|
|
+ set_neighbors(
|
|
|
+ articles, 'next_article_in_category', 'prev_article_in_category')
|
|
|
+
|
|
|
+ for subcategory, articles in generator.subcategories:
|
|
|
+ articles.sort(key=(lambda x: x.date), reverse=(True))
|
|
|
+ index = subcategory.name.count('/')
|
|
|
+ next_name = 'next_article_in_subcategory{}'.format(index)
|
|
|
+ prev_name = 'prev_article_in_subcategory{}'.format(index)
|
|
|
+ set_neighbors(articles, next_name, prev_name)
|
|
|
|
|
|
def register():
|
|
|
signals.article_generator_finalized.connect(neighbors)
|