Pelican-chineses
  • Pelican Documents in Chinese
  • 关于翻译
  • 简介
  • 快速开始
  • 安装
  • 创作
    • 链接、静态文件和外部网站
    • 翻译、语法高亮和发布草稿
  • 发布网站
  • 设置(暂且不翻译)
  • 创建主题
    • 主题对象
  • LICENSE
Powered by GitBook
On this page
  • 结构
  • 模版和变量
  • 通用变量
  • 排序
  • 格式化日期
  • 主页 (index.html)
  • 作者 (author.html)
  • 分类 (category.html)
  • 文章 (article.html)
  • 页面 (page.html)
  • 标签 (tag.html)
  • 周期归档 (period_archives.html)

创建主题

Previous设置(暂且不翻译)Next主题对象

Last updated 6 years ago

为了生成 HTML 的输出, Pelican 使用 作为模版引擎。这是由于它的灵活性和简洁的语法。如果你希望创建自己的主题,可以从 主题中获取灵感。

为了使用你创建的主题来生成网站,聂可以使用 -t 标志来指定主题:

    pelican content -s pelicanconf.py -t /projects/your-site/themes/your-theme

如果你不想每一次都这样指定主题,可以在设置中通过选项 THEME 设置默认主题。

结构

为了生成你自己的主题,你必须遵循下面的结构:

    ├── static
    │   ├── css
    │   └── images
    └── templates
        ├── archives.html         // to display archives
        ├── period_archives.html  // to display time-period archives
        ├── article.html          // processed for each article
        ├── author.html           // processed for each author
        ├── authors.html          // must list all the authors
        ├── categories.html       // must list all the categories
        ├── category.html         // processed for each category
        ├── index.html            // the index (list all the articles)
        ├── page.html             // processed for each page
        ├── tag.html              // processed for each tag
        └── tags.html             // must list all the tags. Can be a tag cloud.
  • static 文件夹包含了所有的静态文件,这些文件将会直接拷贝到输出的 theme 文件夹中。文件系统包括了 CSS 和 image 文件夹,但是这个只是一个例子。你可以随意的在这里安排文件内容。

  • templates 文件夹包含了所有的模版。这些模版将被用作渲染网站内容。上面列举的模版文件都是强制的。你可以添加自己的模版来更好的组织你的主题。

模版和变量

模版的核心的想法是在你的 HTML 页面中嵌入简单的语法。这个文档描述了那一个模版应当在主题中,那些变量将会传递给给模版。

所有的模版将会接收到你在设置文件中定义的变量。只要它们是全部大写的话,就可以直接获取。

通用变量

下面这些设置将在所有的模版中导入。

变量

描述

output_file

被直接生成的文件名,比如当 Pelican 渲染主页的时候,这个变量的值为 "index.html"

articles

一个列表的文章,按照日期降序排列,所有的元素都是 Article 对象,因此你可以获取它们的属性(比如 title,summary, author 等)有时候这是隐藏的(比如 tag 页面)。你将会发现 all_articles 变量的信息

dates

与文章列表相同,按照日期排序,升序

drafts

草稿列表,其他和文章列表相同

tags

(tag, articles)元组的列表,包含了所有的标签

catefories

(category, articles) 元组的列表,包括你所有的分类和对应文章(值)

pages

pages 的列表

hidden_pages

隐藏 pages 的列表

dratf_pages

草稿页面的列表

排序

URL 包装器(包括分类、标签和作者)都有用于比较的方法,因此能够非常简单的通过名称排序:

    {% for tag, articles in tags|sort %}

格式化日期

     {{ article.date|strftime('%d %B %Y') }}

主页 (index.html)

这是你博客中的主页,将会生成文件为 index.html。

如果分页被激活了,那么子页面会被放置在 index{number}.html 中。

变量

描述

articles_paginator

一个文章列表的分页器对象

articles_page

当前页面中的文章

articles_previous_page

前一页的文章(如果不存在则是 None)

articles_next_page

后一页的文章(如果不存在则是 None)

dates_paginator

当前页面的文章的分页器对象,按照时间升序排序

dates_page

当前页面的文章,按照时间升序排序

dates_previous_page

前一个页面的文章,按照时间升序排序(如果不存在则是 None)

dates_next_page

后一个页面的文章,按照时间升序排序(如果不存在则是 None)

page_name

'index' 对于分页器链接非常有用

作者 (author.html)

这个模版用来给每一个作者生成页面,通过设置中的 AUTHOR_SAVE_AS 确定输出位置(默认是 author/{slug}.html )。如果分页被激活,子页面将会放置在 author/{slug}{number}.html 。

变量

描述

author

当前页面的作者名

articles

当前作者的文章

dates

当前作者的文章,按照时间升序

articles_paginator

一个文章列表的分页器对象

articles_page

当前页面中的文章

articles_previous_page

前一页的文章(如果不存在则是 None)

articles_next_page

后一页的文章(如果不存在则是 None)

dates_paginator

当前页面的文章的分页器对象,按照时间升序排序

dates_page

当前页面的文章,按照时间升序排序

dates_previous_page

前一个页面的文章,按照时间升序排序(如果不存在则是 None)

dates_next_page

后一个页面的文章,按照时间升序排序(如果不存在则是 None)

page_name

AUTHOR_URL ,在 {slug} 之后的都被移除了, 对于分页器链接非常有用

分类 (category.html)

这个模版用来渲染所有的分类,输出的地址取决于 CATEGORY_SAVE_AS 设置(默认的是 category/{slug}.html )。如果分页器被激活,子页面将会默认的放置于 category/{slug}{number}.html 。

变量

描述

category

当前的分类名

articles

当前分类的所有文章

dates

当前分类的文章,按照时间升序

articles_paginator

一个文章列表的分页器对象

articles_page

当前页面中的文章

articles_previous_page

前一页的文章(如果不存在则是 None)

articles_next_page

后一页的文章(如果不存在则是 None)

dates_paginator

当前页面的文章的分页器对象,按照时间升序排序

dates_page

当前页面的文章,按照时间升序排序

dates_previous_page

前一个页面的文章,按照时间升序排序(如果不存在则是 None)

dates_next_page

后一个页面的文章,按照时间升序排序(如果不存在则是 None)

page_name

CATEGORY_URL ,在 {slug} 之后的都被移除了, 对于分页器链接非常有用

文章 (article.html)

当前模版用于渲染所有的文章,输出的位置取决于 ARTICLE_SAVE_AS 设置(默认是 {slug}.html )。下面的变量在渲染时可用。

变量

描述

article

正在展示的文章对象

category

当前文章分类的名字

此外,任何你放置于文章开头的元数据都是作为 article 对象的属性,因此可以被取得。属性名字和元数据的名字相同。全部小写的除外。

举个例子,如果你想要在文章中添加一个叫做 FacebookImage 的元数据,像下面这样:

    Title: I love Python more than music
    Date: 2013-11-06 10:06
    Tags: personal, python
    Category: Tech
    Slug: python-je-l-aime-a-mourir
    Author: Francis Cabrel
    FacebookImage: http://franciscabrel.com/images/pythonlove.png

这个新的元数据将在渲染 article.html 模版时,作为 article.facebookimage 可以被使用。举个例子,这允许你特别的为每一个文章指明不同的 Facebook 打开链接标签的图片。

    <meta property="og:image" content="{{ article.facebookimage }}"/>

页面 (page.html)

这个模版用于渲染每一个页面 (page)。输出位置取决于 PAGE_SAVE_AS 设置(默认是 pages/{slug}.html )。下面的变量是可以使用的:

变量

描述

page

正在显示的 page 对象,你可以通过它传递 title,slug 以及 content

标签 (tag.html)

这个模版将会用于渲染所有的标签,输出的 html 的位置取决于 TAG_SAVE_AS 设置(默认是 tag/{slug}.html )。当分页器被激活的时候,子序列页面将会默认放置在 tag/{slug}{number}.html 位置。

变量

描述

tag

当前的标签名

articles

当前标签的所有文章

dates

当前标签的文章,按照时间升序

articles_paginator

一个文章列表的分页器对象

articles_page

当前页面的文章

articles_previous_page

前一页的文章(如果不存在则是 None)

articles_next_page

后一页的文章(如果不存在则是 None)

dates_paginator

当前页面的文章的分页器对象,按照时间升序排序

dates_page

当前页面的文章,按照时间升序排序

dates_previous_page

前一个页面的文章,按照时间升序排序(如果不存在则是 None)

dates_next_page

后一个页面的文章,按照时间升序排序(如果不存在则是 None)

page_name

TAG_URL ,在 {slug} 之后的都被移除了, 对于分页器链接非常有用

周期归档 (period_archives.html)

这个模版用于渲染归档。当 YEAR_ARCHIVE_SAVE_AS 被定义时,渲染每一年的文章;当 MONTH_ARCHIVE_SAVE_AS 被定义时,渲染每个月的文章;当 DAY_ARCHIVE_SAVE_AS 被定义时,渲染每一天的文章。

变量

描述

period

一个 (year, month, day) 元组,表明你当前的周期。其中 year 和 day 都是数字,而 month 是字符串。当按照给定年归档时候,只包含 year;按照指定月归档的时候,包括了 year 和 month;以此类推。

如果你想使用不同的标准排序, 有更多的选项。

Pelican 可以通过你设置的本地环境(DATE_FORMATS,DEFAULT_DATE_FORMAT)来提供 locale_date 属性。在另一方面, date 属性将会是一个 对象。如果你需要自定义时间的格式,使得它与你设置中的不同,请使用 Jinja 的过滤器 strftime。这个和 Python 格式一样,因此过滤器会正确的工作,根据你设置中的本地化相关的变量来正确的格式化日期:

你可以在 查看 period 是如何使用的。

jinja
"simple"
Jinja 的排序指令
datetime
strftime
"simple" 主题的 period_archives.html 模版