如何同时使用多个鹈鹕主题?

时间:2015-04-17 05:43:33

标签: themes pelican

我想使用从GitHub克隆的主题到我的主题目录中几乎所有页面和文章以及自动生成的页面之外我的目标网页模板不是克隆主题的一部分,它使用自己特定的CSS ..

目前,我的工作站点使用新模板文件以及添加到克隆主题的相关图像,js和css文件。但这不是我想要的。

我希望将登录页面的模板和相关文件与克隆主题分开,但不了解用于指向不同主题的设置和/或内容文件的元数据仅适用于那一页的路径

即。我想在一个页面上覆盖THEME设置。

设置THEME,CSS_FILE,DIRECT-TEMPLATE和TEMPLATE_PAGES似乎不是我想要的。但也许他们是?

1 个答案:

答案 0 :(得分:2)

您有几种不同的选择。就个人而言,我会选择第一种方法,但我在不同的情况下使用了所有这三种方法。

index.html方法

使用此方法,您可以创建一个直接HTML的index.html文件 - 这正是您希望index.html页面看起来的样子。您可以在其中使用Jinja变量,如果您在主题中包含CSS(而不是使用hosted libraries),这很重要,但大多数情况下,它看起来与您希望它看起来完全一样。一个非常简单的例子:

<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在哪里放置最终{{1通过设置index.html变量,也可以在TEMPLATE_PAGES文件中添加:

pelicanconf.py

现在,您可以通过浏览器中的TEMPLATE_PAGES = { 'index.html' : 'index.html' } 查看您的信息页。

如果您想将文件放在其他位置,可以指定所需的任何位置:

localhost/

可以在TEMPLATE_PAGES = { 'index.html' : 'mydirectory/mypage.html' } 访问您的网页。

在Markdown中包含备用CSS文件

由于大多数HTML在Markdown帖子中逐字逐句,您还可以修改着陆页Markdown文件以在顶部包含CSS文件,

localhost/mydirectory/mypage.html

添加元数据以控制主题

最后,您可以直接修改主题以包含控制主题使用的样式表的元数据属性。例如,让我们使用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! 元数据标志。我们将为我们的索引Markdown页面指定WhichTheme:,为所有其他页面指定WhichTheme: index(或不指定)。然后在我们的主题文件中,我们将查找用于呈现所有页面的模板(通常为WhichTheme: notindex),我们将添加一个Jinja条件来检查我们的新变量,该变量可在{{1}处访问}:

pages.html