diff --git a/static_comments/Readme.md b/static_comments/Readme.md new file mode 100644 index 0000000..f95fbc4 --- /dev/null +++ b/static_comments/Readme.md @@ -0,0 +1,26 @@ +Static comments +--------------- + +This plugin allows you to add static comments to an article. By default the +plugin looks for the comments of each article in a local file named +``comments/{slug}.md``, where ``{slug}`` is the value of the slug tag for the +article. The comments file should be formatted using markdown. + +Set the ``STATIC_COMMENTS`` parameter to True to enable the plugin. Default is +False. + +Set the ``STATIC_COMMENTS_DIR`` parameter to the directory where the comments +are located. Default is ``comments``. + +On the template side, you just have to add a section for the comments to your +``article.html``, as in this example:: + + {% if STATIC_COMMENTS %} +
+

Comments!

+ {{ article.metadata.static_comments }} +
+ {% endif %} + +Here is an example of usage: + diff --git a/static_comments/__init__.py b/static_comments/__init__.py new file mode 100644 index 0000000..9d131b2 --- /dev/null +++ b/static_comments/__init__.py @@ -0,0 +1 @@ +from .static_comments import * diff --git a/static_comments/static_comments.py b/static_comments/static_comments.py new file mode 100644 index 0000000..65c4491 --- /dev/null +++ b/static_comments/static_comments.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- + +import codecs +import logging +import markdown +import os + +logger = logging.getLogger(__name__) + +from pelican import signals + + +def initialized(pelican): + from pelican.settings import DEFAULT_CONFIG + DEFAULT_CONFIG.setdefault('STATIC_COMMENTS', False) + DEFAULT_CONFIG.setdefault('STATIC_COMMENTS_DIR' 'comments') + if pelican: + pelican.settings.setdefault('STATIC_COMMENTS', False) + pelican.settings.setdefault('STATIC_COMMENTS_DIR', 'comments') + + +def add_static_comments(gen, metadata): + if gen.settings['STATIC_COMMENTS'] != True: + return + + if not 'slug' in metadata: + logger.warning("static_comments: " + "cant't locate comments file without slug tag in the article") + return + + fname = os.path.join(gen.settings['STATIC_COMMENTS_DIR'], + metadata['slug'] + ".md") + + if not os.path.exists(fname): + return + + input_file = codecs.open(fname, mode="r", encoding="utf-8") + text = input_file.read() + html = markdown.markdown(text) + + metadata['static_comments'] = html + + +def register(): + signals.initialized.connect(initialized) + signals.article_generator_context.connect(add_static_comments)