接前面 Hello Pelican Again 与 Pelican继续了解,当前blog系统已经改的有点面目全非。再简单了解一下 Pelican 的 theme,Pelican模板使用的Jinja2。
模板结构
static
部分用于存放主题的静态资源文件,包括 CSS、图片、JavaScript 等。Pelican 会将此目录中的文件复制到输出目录中,与生成的 HTML 文件一起发布。templates
目录下的Jinja2模板文件用于定义每个页面的布局和内容显示方式。Pelican 会根据内容类型(文章、标签、分类等)选择相应的模板文件来生成 HTML 页面。下面列出的这些模板必须都存在。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
变量
Pelican为模板提供的一些常规变量
通用变量
变量 | 描述 |
---|---|
output_file |
当前正在生成的文件名。例如,当 Pelican 正在渲染首页时,output_file 的值为 "index.html" 。 |
articles |
文章列表,按日期降序排列。所有元素都是 Article 对象,可访问其属性(如标题、摘要、作者等)。有时会被覆盖(例如在标签页面中)。在这种情况下,可以在 all_articles 变量中找到信息。 |
dates |
相同的文章列表,但按日期升序排列。 |
hidden_articles |
隐藏的文章列表。 |
drafts |
草稿文章列表。 |
period_archives |
一个字典,包含与时间段归档相关的元素(如果启用)。详见“Listing and Linking to Period Archives”部分的细节。 |
authors |
(作者, 文章) 元组的列表,包含所有作者及其对应的文章。 |
categories |
(分类, 文章) 元组的列表,包含所有分类及其对应的文章。 |
tags |
(标签, 文章) 元组的列表,包含所有标签及其对应的文章。 |
pages |
页面列表。 |
hidden_pages |
隐藏的页面列表。 |
draft_pages |
草稿页面列表。 |
另外,在配置文件 pelicanconf.py 中,可以自由定义变量(注意不要和pelian内置变量冲突),这些自定义变量,在jinja2模板中也可以直接用。
每个页面有自己额外支持的变量
index.html
主页,也支持分页(pagination),主要的变量:
变量 | 描述 |
---|---|
articles_paginator |
文章列表的分页器对象 |
articles_page |
当前页的文章 |
articles_previous_page |
文章的上一页(如果页面不存在则为 None ) |
articles_next_page |
文章的下一页(如果页面不存在则为 None ) |
分页机制:
1 2 3 4 5 6 7 8 9 10 |
|
文章列表
1 2 3 4 5 |
|
article.html
单篇文章页面
变量 | 描述 |
---|---|
article |
当前显示的文章对应的article对象 |
category |
当前文章所属类别 名称 |
变量 article 的成员主要来自头部的meta data:
1 2 3 4 5 6 7 8 |
|
可以自行定义新的字段,只要不和pelican预留字段冲突即可:
预留字段 | 描述 |
---|---|
title |
标题(Article 或 Page) |
date |
发布日期, (YYYY-MM-DD HH:SS ) |
modified |
修改日期 (YYYY-MM-DD HH:SS ) |
tags |
逗号分隔 |
keywords |
逗号分隔 (HTML content only) |
category |
每个article只能指定一个类别 |
slug |
ID,当title有中文时,最好指定它(不然url中会用拼音)。 |
author |
作者 |
authors |
作者们 |
summary |
Brief description of content for index pages |
lang |
语言 (en , fr , etc.) |
translation |
当前article是否是另一个的翻译 (true or false ) |
status |
状态:draft , hidden , or published |
template |
Name of template to use to generate content (without extension) |
save_as |
Save content to this relative file path |
url |
URL to use for this article/page |
模板中使用:
1 2 3 4 5 6 7 8 9 10 |
|
参考
- https://docs.getpelican.com/en/4.10.2/themes.html
- https://github.com/getpelican/pelican/tree/main/pelican/themes/simple/templates