鹈鹕:在主页上包含文件的内容

问题描述

Noob Pelican问题在这里

我想在我的鹈鹕网站的主页上包含与博客无关的帖子的内容,而只是读取第一个文件并将结果放在主页上。我可以将一个帖子放在一起,但这确实不是我想要的。

我当然可以修改index.html模板并将文本直接放在那里。但是我想做的是在其中放置一些代码,该文件将解析文件并将相同的文本放置在其中。

解决方法

使用Python作为设置文件格式的好处之一是Pelican可以执行您想要的操作,而无需编写插件或修改Pelican本身。

假设您要在intro.rst模板中呈现一些存储在index.html中的介绍性内容。 Pelican设置文件中的以下新增内容将导致一个新的INTRO变量,其中包含intro.rst文件的呈现内容。

from pelican.settings import DEFAULT_CONFIG
from pelican.readers import RstReader

config = DEFAULT_CONFIG.copy()
# If you need to override default settings (e.g.,DOCUTILS_SETTINGS / DEFAULT_LANG):
# config["DEFAULT_LANG"] = "de"

# .read() returns (content,metadata). Keep content only; we don’t need the metadata.
# Assign content to an ALL-CAPS variable to access from template:
INTRO,_ = RstReader(config).read("path/to/intro.rst")

通过上述设置,您应该能够通过将{{ INTRO }}变量放置在索引模板中的所需位置来插入呈现的内容。