【问题标题】:How do I use more than one Pelican theme simultaneously?如何同时使用多个 Pelican 主题?
【发布时间】:2015-04-17 05:43:32
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: themes pelican


    【解决方案1】:

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

    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>
    

    然后,您可以通过在您的 pelicanconfig.py 中包含这一行来告诉 Pelican 不要渲染 .html 文件:

    READERS = {'html': None}
    

    这不会阻止 Jinja 处理 HTML 文档中的 Jinja 模板。

    最后,因为您没有在 HTML 文件本身中包含有关 HTML 文件的任何元数据(这就是 READERS = {'html': None} 业务的全部内容),您必须告诉 Pelican 将最终的 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: 元数据标志。我们将为我们的索引 Markdown 页面指定WhichTheme: index,为所有其他页面指定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 %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      相关资源
      最近更新 更多