使用Sphinx创建个人网站和博客

42 投票
8 回答
14778 浏览
提问于 2025-04-15 15:06

Sphinx 是一个Python库,可以从一组ReST格式的文本文件中生成漂亮的文档。

我想知道有没有人写过Sphinx插件,让它可以生成个人网站和博客

特别是对于博客,需要有一种方法可以自动按时间顺序列出文章,并生成RSS订阅源。为了实现这种特殊的页面或XML生成,需要编写一个Sphinx插件。

有没有人尝试过这个?

8 个回答

14

如果你需要使用 reStructuredText 来写东西,建议你试试 Pelican

Pelican 是一个静态网站生成器,用 Python 编写。你可以直接用 reStructuredText 或 Markdown 来写你的博客文章。

14

截至目前(2012年2月),有一些不同的资源可以帮助你实现你想要的功能:

一个基于Sphinx的博客引擎:http://tinkerer.me/

Reinout Van Rees的博客:https://github.com/reinout/reinout.vanrees.org

一个叫做feed的扩展:https://bitbucket.org/birkenfeld/sphinx-contrib/src/tip/feed/README

23

我在这个网站上做过类似的事情:http://reinout.vanrees.org/weblog。关键的技巧是添加一个预处理步骤。我把我的博客文章放在一个 weblog/yyyy/mm/dd/ 的文件夹结构里。

有一个脚本会遍历这个文件夹结构,在每个目录下创建 index.txt 文件,列出里面的子项目。然后,正常的 Sphinx 处理过程会把这些 index.txt 文件渲染出来。

我还为标签添加了一个自定义的 Sphinx 处理器。所以在我的博客文章开头加上 ".. tags:: python, buildout" 这样的内容,就会生成相应的标签。然后,预处理器会收集这些条目,并写出一个 weblog/tags/TAGNAME.txt 文件,Sphinx 也会正常渲染这个文件。

预处理器还会创建根目录下的 weblog/index.txt,里面包含最新的10条文章。同时,它还会在输出目录中创建一个 weblog/atom.xml 文件,用于 RSS 订阅。

所以,你需要一些自定义的东西,但基本上都是纯文本,对我来说这是一个不错的练习。而且你可以写一些辅助脚本来简化操作,比如一个可以把某个地方的文本文件复制到今天的博客目录的脚本(还包括创建缺失的目录和执行 "svn add")。

撰写回答