跳转到主要内容

系列是一个将多个帖子组合成系列的Pelican插件

项目描述

Series: Pelican插件

Build Status PyPI Version License

系列是Pelican插件,可以将多个帖子组合成一系列。全局上,它提供了一个所有系列的列表,并为每篇文章提供同一系列中所有文章的列表以及系列中下一篇文章和上一篇文章的链接。

安装

此插件可以通过以下方式安装:

python -m pip install pelican-series

只要您没有在Pelican设置文件中明确添加PLUGINS设置,则新安装的插件应该会被自动检测并启用。否则,您必须将series添加到现有的PLUGINS列表中。有关更多信息,请参阅如何使用插件文档。

用法

为了将reStructuredText格式化的帖子标记为系列的一部分,请使用:series:元数据

:series:  NAME_OF_THIS_SERIES

或者,对于Markdown格式的内容

Series: NAME_OF_THIS_SERIES

该插件收集属于同一系列的所有文章或页面,并提供您可以在模板中使用的系列相关变量。

文章和页面

此插件同时适用于文章和页面。由于Pelican使用特定的变量article用于文章模板和page用于页面模板,因此很难给出同时适用于两种情况的示例。在以下文档中,所有示例都将提到article.(例如article.seriesarticle.title),但代码与page(例如page.seriespage.title)相同。

文章系列和页面系列是分别创建的,因此即使文章和页面属于同一系列,它们也不会一起显示。

索引

默认情况下,系列中的文章按日期排序,然后自动编号。系列中的页面按标题排序并自动编号。

如果您想强制指定顺序,请在文章元数据中指定:series_index:(reST)或series_index:(Markdown),从1开始。具有此强制索引的所有文章都将放在系列的开头,并按索引本身排序。所有其余的文章都跟在它们后面,按默认顺序排序(文章按日期排序,页面按标题排序)。

该插件为您提供了以下变量以用于模板

  • article.series.name是文章元数据中指定的系列名称
  • article.series.index是当前文章在系列中的索引
  • article.series.all是系列中所有文章的有序列表(包括当前文章)
  • article.series.all_previous是当前文章之前发布的文章的有序列表
  • article.series.all_next是当前文章之后发布的文章的有序列表
  • article.series.previous是系列中的上一篇文章(是article.series.all_previous[-1]的快捷方式)或对于第一篇文章是None
  • article.series.next是系列中的下一篇文章(是article.series.all_next[0]的快捷方式)或对于最后一篇文章是None

例如

{% if article.series %}
    <p>This post is part {{ article.series.index }} of the "{{ article.series.name }}" series:</p>
    <ol class="parts">
        {% for part_article in article.series.all %}
            <li {% if part_article == article %}class="active"{% endif %}>
                <a href='{{ SITEURL }}/{{ part_article.url }}'>{{ part_article.title }}</a>
            </li>
        {% endfor %}
    </ol>
{% endif %}

全局上下文

警告:在版本3中,全局密钥series已被重命名为article_series,以区分新的全局密钥page_series

该插件还向全局上下文中添加了密钥article_seriespage_series。它们是所有系列名称(作为键)和项(作为值)的字典。您可以使用它列出您网站上的所有系列,例如

{% for series_name, series_articles in series.items() %}
{% set article = series_articles[0] %}
<article class="card">
	<a href="{{ article.url }}" class="image">
		<img src="/images/{{ article.image }}.jpg" alt="{{ article.image }}" />
	</a>
	<div class="card-body">
    	<a href="{{ article.url }}"><h3 class="card-title">{{ series_name }}</h3></a>
     	<ul class="actions">
     		<li><a href="{{ article.url }}" class="button">Start</a></li>
     	</ul>
	</div>
</article>
{% endfor %}

由于无法从插件中创建页面,您可以利用它为特定系列创建一个页面,尽管您必须在模板中硬编码系列名称。

贡献

欢迎并非常感谢贡献。每一点帮助都很大。您可以通过改进文档、添加缺失功能以及修复错误来做出贡献。您还可以通过审查和评论现有问题来提供帮助。

要开始为此插件贡献代码,请查阅贡献给 Pelican 文档,从《贡献代码》部分开始。

许可证

此项目遵循 AGPL 3.0 许可。

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

pelican_series-3.0.0.tar.gz (8.2 kB 查看哈希)

上传时间

构建分布

pelican_series-3.0.0-py3-none-any.whl (10.8 kB 查看哈希)

上传时间 Python 3

由以下机构支持