forked from varia/varia.website
.. | ||
__init__.py | ||
ReadMe.rst | ||
show_source.py |
Show Source plugin ------------------ The plugin allows you to place a link to the source text of your posts in the same way that `Sphinx`_ does. It works for both pages and articles. Plugin Activation ~~~~~~~~~~~~~~~~~ To activate the plugin ensure that you have ``SHOW_SOURCE_ON_SIDEBAR = True`` or ``SHOW_SOURCE_IN_SECTION = True`` your settings file. Making Source Available for Posts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In order to mark posts so that their source may be seen use the following metadata values (unless overridden)- for reStructuredText documents: .. code-block:: reStructuredText :show_source: True or, in Markdown syntax .. code-block:: Markdown Show_source: True The plugin will render your source document URL to a corresponding ``article.show_source_url`` (or ``page.show_source_url``) attribute which is then accessible in the site templates. Show Source in the Templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ To get the show source links on the article or page you will have to modify your theme, either as a sidebar display or at the foot of an article. Article or Page Sidebar Display ******************************* How to get the source link to appear in the sidebar using the `pelican-bootstrap3`_ theme: .. code-block:: HTML {% if SHOW_SOURCE_ON_SIDEBAR %} {% if (article and article.show_source_url) or (page and page.show_source_url) %} <li class="list-group-item"><h4><i class="fa fa-tags fa-file-text"></i><span class="icon-label">This Page</span></h4> <ul class="list-group"> <li class="list-group-item"> {% if article %} <a href="{{ SITEURL }}/{{ article.show_source_url }}">Show source</a> {% elif page %} <a href="{{ SITEURL }}/{{ page.show_source_url }}">Show source</a> {% endif %} </li> </ul> </li> {% endif %} {% endif %} Article Footer Display ********************** Here's some code (yes, `pelican-bootstrap3`_ again) to enable a souce link at the bottom of an article: .. code-block:: HTML {% if SHOW_SOURCE_IN_SECTION %} {% if article and article.show_source_url %} <section class="well" id="show-source"> <h4>This Page</h4> <ul> <a href="{{ SITEURL }}/{{ article.show_source_url }}">Show source</a> </ul> </section> {% endif %} {% endif %} Overriding Default Plugin Behaviour ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The default behaviour of the plugin is that revealing source is enabled on a case by case basis. This can be changed by the use of :py:`SHOW_SOURCE_ALL_POSTS = True` in the settings file. This does mean that the plugin will publish all source documents no matter whether ``show_source`` is set in the metadata or not. Unless overridden, each document is saved as the article or page slug attribute with a ``.txt`` extension. So for example, if your configuration had ``ARTICLE_SAVE_AS`` configured like so: .. code-block:: python ARTICLE_SAVE_AS = 'posts/{date:%Y}/{date:%m}/{slug}/index.html' Your static HTML post and source text document will be like the following: .. code-block:: Text posts/2016/10/welcome-to-my article/index.html posts/2016/10/welcome-to-my article/welcome-to-my article.txt You can add the ``SHOW_SOURCE_FILENAME`` variable in your settings file to override the source file name, so you could set the following: .. code-block:: python SHOW_SOURCE_FILENAME = 'my_source_file.txt' So with the ``ARTICLE_SAVE_AS`` configured as above, the files would be saved thus: .. code-block:: Text posts/2016/10/welcome-to-my article/index.html posts/2016/10/welcome-to-my article/my_source_file.txt This is the same behaviour for pages also. .. _`Sphinx`: http://www.sphinx-doc.org/ .. _`pelican-bootstrap3`: https://github.com/getpelican/pelican-themes/tree/master/pelican-bootstrap3