1

我想使用从 GitHub 克隆到我的主题目录的主题,用于几乎所有页面和文章以及自动生成的页面,但我的登录页面除外,其模板不是克隆主题的一部分并且使用自己的特定 css..

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

我想将登录页面的模板和相关文件与克隆的主题分开,但不明白要使用哪些设置和/或内容文件的元数据来指向该页面的不同主题路径

即我只想在一页上覆盖主题设置。

设置主题、CSS_FILE、DIRECT-TEMPLATE 和 TEMPLATE_PAGES 似乎并不是我想要的。但也许他们是?

4

1 回答 1

2

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

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.htmlTEMPLATE_PAGESpelicanconf.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 %}
于 2015-06-15T07:37:00.827 回答