Support Series plugin

The Pelican Series plugin (https://github.com/pelican-plugins/series)
is a convenient way for authors to link articles together as multiple
installments of a series.

Add support for the Series plugin to this theme: render articles
belonging to a series with a footer pointing to the preceding and
following articles in the series, using the same styling as "related
posts" links.

This implementation is heavily inspired by the Series plugin in the
Pelican bootstrap3 theme (MIT licensed):
https://github.com/getpelican/pelican-themes/blob/master/pelican-bootstrap3/templates/includes/series.html

Fixes #289.
This commit is contained in:
Florian Haas 2021-10-13 21:02:27 +02:00
parent 1220329ce4
commit 20725c8dc0
2 changed files with 25 additions and 0 deletions

View file

@ -17,6 +17,7 @@ The minimalist [Pelican](http://blog.getpelican.com/) theme.
- Open Graph - Open Graph
- Rich Snippets (JSON-LD) - Rich Snippets (JSON-LD)
- Related Posts (via [plugin](https://github.com/getpelican/pelican-plugins/tree/master/related_posts) or AddThis) - Related Posts (via [plugin](https://github.com/getpelican/pelican-plugins/tree/master/related_posts) or AddThis)
- Series (via [plugin](https://github.com/pelican-plugins/series))
- Minute read (via [plugin](https://github.com/getpelican/pelican-plugins/tree/master/post_stats)) - Minute read (via [plugin](https://github.com/getpelican/pelican-plugins/tree/master/post_stats))
- [Multiple Code Highlight Styles](https://github.com/alexandrevicenzi/Flex/wiki/Code-Highlight) - [Multiple Code Highlight Styles](https://github.com/alexandrevicenzi/Flex/wiki/Code-Highlight)
- [Translation Support](https://github.com/alexandrevicenzi/Flex/wiki/Translations) - [Translation Support](https://github.com/alexandrevicenzi/Flex/wiki/Translations)
@ -41,6 +42,7 @@ The minimalist [Pelican](http://blog.getpelican.com/) theme.
- [I18N Sub-sites](https://github.com/getpelican/pelican-plugins/tree/master/i18n_subsites) - [I18N Sub-sites](https://github.com/getpelican/pelican-plugins/tree/master/i18n_subsites)
- [Minute read](https://github.com/getpelican/pelican-plugins/tree/master/post_stats) - [Minute read](https://github.com/getpelican/pelican-plugins/tree/master/post_stats)
- [Related Posts](https://github.com/getpelican/pelican-plugins/tree/master/related_posts) - [Related Posts](https://github.com/getpelican/pelican-plugins/tree/master/related_posts)
- [Series](https://github.com/pelican-plugins/series)
- [Representative image](https://github.com/getpelican/pelican-plugins/tree/master/representative_image) - [Representative image](https://github.com/getpelican/pelican-plugins/tree/master/representative_image)
- [Neighbors](https://github.com/getpelican/pelican-plugins/tree/master/neighbors) - [Neighbors](https://github.com/getpelican/pelican-plugins/tree/master/neighbors)
- [Tipue Search](https://github.com/getpelican/pelican-plugins/blob/master/tipue_search/) - [Tipue Search](https://github.com/getpelican/pelican-plugins/blob/master/tipue_search/)

View file

@ -83,6 +83,29 @@
<div class="addthis_relatedposts_inline"></div> <div class="addthis_relatedposts_inline"></div>
{% endif %} {% endif %}
{% if article.series %}
<div class="related-posts">
{% set text = SERIES_TEXT|default('Part %(index)s of the %(name)s series') %}
<h4>{{ text|format(index=article.series.index, name=article.series.name) }}</h4>
{% if article.series.all_previous %}
<h5>Previous articles</h5>
<ul>
{% for article in article.series.all_previous %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if article.series.all_next %}
<h5>Next articles</h5>
<ul>
{% for article in article.series.all_next %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endif %}
{% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.article_bottom %} {% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.article_bottom %}
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads-responsive" <ins class="adsbygoogle ads-responsive"