你有几个不同的选择。就个人而言,我会使用第一种方法,但我在不同的情况下使用了这三种方法。
index.html 方法
使用这种方法,您可以创建一个index.html
纯 HTML 文件 - 正是您希望index.html
页面的外观。您可以在其中使用 Jinja 变量,如果您在主题中包含 CSS(而不是使用托管库),这一点很重要,但大多数情况下,它看起来与您想要的完全一样。一个非常简单的例子:
<html>
<head>
<title>My Title</title>
<link href="{{ SITEURL }}/theme/css/mystyles.css" rel="stylesheet" type="text/css">
<body>
<h1>Hello world!</h1>
</body>
</html>
.html
然后,您可以通过在您的 : 中包含这一行来告诉 Pelican 不要渲染文件pelicanconfig.py
:
READERS = {'html': None}
这不会阻止 Jinja 处理 HTML 文档中的 Jinja 模板。
最后,因为您没有在 HTML 文件本身中包含有关 HTML 文件的任何元数据(这就是业务的全部内容),所以您必须通过设置变量READERS = {'html': None}
来告诉 Pelican 将 final 放在哪里,也在您的文件中:index.html
TEMPLATE_PAGES
pelicanconf.py
TEMPLATE_PAGES = {
'index.html' : 'index.html'
}
现在您可以通过localhost/
在浏览器中查看您的页面。
如果你想把文件放在不同的位置,你可以指定你想要的任何位置:
TEMPLATE_PAGES = {
'index.html' : 'mydirectory/mypage.html'
}
这将使您的页面可在localhost/mydirectory/mypage.html
.
在 Markdown 中包含备用 CSS 文件
由于大多数 HTML 在 Markdown 帖子中逐字运行,您还可以修改登录页面 Markdown 文件以在顶部包含一个 CSS 文件,
Title: My Index
Author: Clark Kent
Date: 2010-12-03 10:20
Category: StackOverflow
<link href="{{ SITEURL }}/theme/css/mystyles.css" rel="stylesheet" type="text/css">
# Hello World
Welcome to the landing page!
添加元数据以控制主题
最后,您可以直接修改主题以包含一个元数据属性,该属性控制主题使用的样式表。例如,让我们使用WhichTheme:
元数据标志。我们将为WhichTheme: index
我们的索引 Markdown 页面指定,并且WhichTheme: notindex
(或没有)为所有其他页面指定。然后在我们的主题文件中,我们将查找用于渲染所有页面的模板(通常是pages.html
),我们将添加一个 Jinja 条件来检查我们的新变量,该变量可在以下位置访问page.WhichTheme
:
{% if page.WhichTheme=='index' %}
<link href="{{ SITEURL }}/theme/css/mystyles.css" rel="stylesheet" type="text/css">
<h1>{{ page.title }}</h1>
{% else %}
<h1>{{ page.title }}</h1>
{% endif %}