从web源列表向站点添加webring
pelican-webring的Python项目详细描述
网铃
这个Pelican插件从列表中添加一个webring或feed聚合到你的站点 网络订阅源。在
它从web提要列表中检索最新的帖子并使其可用 在模板中,有效地创建partial webring或提要聚合。 帖子从新到旧排序。在
它的灵感来自于openring,一个用于 从模板和列表生成要包含在SSG中的HTML文件 网络订阅源,以及 pelican-planet,鹈鹕 用于创建订阅源聚合的插件。在
安装
此插件可以通过以下方式安装:
pip install pelican-webring
设置
^{pr2}$URL或本地文件形式的web源列表。在
WEBRING_MAX_ARTICLES = 3
最大文章数。在
WEBRING_ARTICLES_PER_FEED = 1
每个源的最大文章数。在
WEBRING_SUMMARY_WORDS = 20
文章摘要的最大字数。如果设置为0,则截断为 残疾人。在
WEBRING_CLEAN_SUMMARY_HTML = True
是否从文章摘要中清除html标记。在
示例
我们想在两个博客上展示我们的两篇文章 每个博客。我们还想做一个简短的总结。在
WEBRING_FEED_URLS = [
'https://justinmayer.com/feeds/all.atom.xml',
'https://danluu.com/atom.xml'
]
WEBRING_ARTICLES_PER_FEED = 2
WEBRING_MAX_ARTICLES = 4
WEBRING_SUMMARY_LENGTH = 25
模板
该插件使生成的web提要文章在变量中可用
webring_articles
。在
所有现有的date属性都是鹈鹕utils.SafeDatetime
对象,它们
可与Pelican's Jinja filter
^{
每一篇文章都包含原始提要条目中的所有可用属性 示例:
article.title
:文章标题。在article.link
:文章URL。在article.date
:文章日期为鹈鹕utils.SafeDatetime
对象。在article.summary
:文章摘要,在web提要中提供并修改 根据这个插件的设置。在article.description
:原文章摘要,无需清洗或 截断。在
文章还包含关于source feed的信息,可以是
通过source_
前缀属性访问:
source_title
:web提要的标题。在source_link
:指向web提要的链接。在source_id
:一些web提要中提供的标识字段。在
如果访问的属性不在条目或源提要中,则
将返回空字符串,但dates(published
,updated
)除外,
created
和{
要获得可用条目和源提要属性的列表,read the feedparser reference document。在
您可以在任何类型的内容类型中使用webring_articles
,包括pages
和articles。请阅读以下各节中有关如何使用此方法的示例
模板中的变量。在
在文章底部添加Webring部分
假设我们想把我们的webring放在文章的底部,使用 默认鹈鹕模板(即notmyidea)。为了简化,我们将使用现有的 CSS类。在
编辑notmyidea/templates/base.html
文件,并使其如下所示:
...
<section id="extras" class="body">
{% if WEBRING_FEED_URLS %}
<div class="webring">
<h2>Webring</h2>
{% for article in webring_articles %}
<p><a href="{{ article.link }}">{{ article.title }}</a></p>
<p>{{ article.date|strftime('%d %B %Y') }} - {{ article.summary}}</p>
{% endfor %}
</div>
{% endif %}
{% if LINKS %}
...
如果没有链接或社交小部件,结果将类似于 下图:
添加提要聚合页
在本例中,我们希望生成一个包含所有提要内容的新页面
通过这个插件。例如,假设我们希望访问该页面:
https://my-domain.com/feed-aggregation
。在
在鹈鹕中,这一目标可以通过几种方式实现。我们在展示 这里只需要一个新的HTML模板。在
下面是一个名为feed-aggregation.html
的示例模板文件,它基于
page.html
应该驻留在主题模板目录中:
{% extends "base.html" %}
{% block title %}Feed aggregation{% endblock %}
{% block content %}
<section id="content" class="body">
<h1 class="entry-title">Feed aggregation</h1>
{% if WEBRING_FEED_URLS %}
{% for article in webring_articles %}
<article class="hentry">
<header>
<h2><a href="{{ article.link }}">{{ article.title }}</a></h2>
</header>
<p>{{ article.date|strftime('%d %B %Y') }}</p>
<div class="entry-content">
{{ article.summary}}
</div>
</article>
{% endfor %}
{% endif %}
</section>
{% endblock %}
最后,为了让我们的模板在需要的位置呈现,我们将下面的^{str1}$template页面添加到我们的pelicanconf.py
。注意,feed-aggregation.html
是相对于主题的模板目录的。在
TEMPLATE_PAGES = { 'feed-aggregation.html': 'feed-aggregation/index.html' }
最终结果如下图所示:
贡献
我们欢迎并非常感谢您的贡献。每一点帮助。你可以通过改进文档、添加缺失的功能和修复bug来做出贡献。您也可以通过查看和评论existing issues来帮助您。在
要开始对此插件作出贡献,请查看Contributing to Pelican文档,从贡献代码部分开始。在
- 项目
标签: