从web源列表向站点添加webring

pelican-webring的Python项目详细描述


网铃

Build StatusPyPI Version

这个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提要中提供的标识字段。在

如果访问的属性不在条目或源提要中,则 将返回空字符串,但datespublishedupdated)除外, created和{}),返回{}。在

要获得可用条目和源提要属性的列表,read the feedparser reference document。在

您可以在任何类型的内容类型中使用webring_articles,包括pagesarticles。请阅读以下各节中有关如何使用此方法的示例 模板中的变量。在

在文章底部添加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 %}
        ...

如果没有链接或社交小部件,结果将类似于 下图:

Footer Webring

添加提要聚合页

在本例中,我们希望生成一个包含所有提要内容的新页面 通过这个插件。例如,假设我们希望访问该页面: 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' }

最终结果如下图所示:

Page Webring

贡献

我们欢迎并非常感谢您的贡献。每一点帮助。你可以通过改进文档、添加缺失的功能和修复bug来做出贡献。您也可以通过查看和评论existing issues来帮助您。在

要开始对此插件作出贡献,请查看Contributing to Pelican文档,从贡献代码部分开始。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java名称为User的文件始终保存为intellij中的文本文件   java Hibernate:过时状态异常   java是否可以增加主题订阅服务器中的保持活动状态检查时间?   java Spring boot,Thymeleaf如何从网页获取语言参数   java从JSON转换为JSONLD   java Android如何配置Jenkins的多配置项目?   java是否可以使用字符串名称不完整的getIdentifier?   Ruby相当于Java Bouncy Castle AES128CBC填充   java在使用系统时获取FileNotFoundException。getProperty(“user.dir”)   java最小的合法zip/jar文件是什么?   java会降低效率吗?   enums Java如何将类型安全枚举用作switchcase语句?   使用Apache POI的Excel文件中的java计数非空行   java从Spring数据的页面映射是如何工作的?   java两个字符串不相等