文章目录
  1. 1. Zola的安装与使用
    1. 1.1. markdown内容
    2. 1.2. 模板文件
    3. 1.3. 构建与运行

Zola是一个快速的静态站点生成工具,使用Rust语言实现,类似于HugoPelicanJekyll

  • 站点内容使用CommonMark语法,兼容Markdown规范,使用Rust库pulldown-cmark来解析Markdown文件;
  • 页面模板及主题样式文件中使用Tera模板引擎, 语法上类似于Jinja2, Django templates, Liquid, Twig
  • 配置文件config.toml使用TOML格式;markdown文件的front-matter也是TOML,同时也支持YAML。 Rust程序配置偏爱TOML格式。

Zola的最新版本为v0.18.0, 发布时间为2023-12-19。项目还在开发中, 还未达到稳定版本。

参考:

Zola的安装与使用

Zola可以直接使用各种操作系统的包管理程序直接安装。这里使用源码方式来安装。具体请参考 https://www.getzola.org/documentation/getting-started/installation/。

使用snap安装的命令为:

1
$ sudo snap install --edge zola

源码方式安装的命令:

1
2
3
4
$ git clone https://github.com/getzola/zola.git
$ cd zola
$ cargo install --path . --locked
$ zola --version

捕获-3.PNG

安装完成后,使用命令zola init创建新的项目my-site。

1
2
3
$zola init my-site
$cd my-site && ls
config.toml content sass static templates themes

content文件夹存放markdown内容,按子文件夹分section, 但作为section的子文件夹内需要有一个特殊的_index.md,里面保存section的一些配置信息。template存放自定义的页面模板, 而themes里是主题样式。

捕获-4.PNG
捕获-5.PNG

markdown内容

在content目录下新增子目录blog,再新增文件blog/_index.md。 这里新增了一个section, 名为blog, 目录下的md文件的访问路径将会以/blog/开始。
TOML格式的front-matter必须以+++分隔, 使用YAML格式时需要换成---。如下内容, 指定/blog/使用的模板是blog.html, 相当于section的首页,展示列表;其它的md文件使用模板blog-page.html

1
2
3
4
5
6
+++
title = "List of blog posts"
sort_by = "date"
template = "blog.html"
page_template = "blog-page.html"
+++

新增文件content/blog/first.md, 生成的访问路径为/blog/first/

1
2
3
4
5
6
+++
title = "My first post"
date = 2024-02-15
+++

This is my first blog post.

模板文件

在template目录下新增模板文件base.html, 作为其它模板的基础。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<title>MyBlog</title>
</head>

<body>
<section>
<div>
{% block content %} {% endblock %}
</div>
</section>
</body>

</html>

然后新增文件template/blog.html, section的首页模板引用了变量section.title, section.pages

1
2
3
4
5
6
7
8
9
10
11
12
13
{% extends "base.html" %}

{% block content %}
<h1>
{{ section.title }}
</h1>
<ul>

{% for page in section.pages %}
<li><a href>{{ page.title }}</a></li>
{% endfor %}
</ul>
{% endblock content %}

新增文件template/blog-page.html。 section下的其它md文件是page。 模板中引用变量page.titlepage.datepage.content

1
2
3
4
5
6
7
8
9
{% extends "base.html" %}

{% block content %}
<h1>
{{ page.title }}
</h1>
<p><strong>{{ page.date }}</strong></p>
{{ page.content | safe }}
{% endblock content %}

构建与运行

接下来使用命令zola build构建项目, 生成目标文件位于public目录下。命令zola serve先构建再启动本地服务器,启动服务器的默认端口是1111, 启动后打开浏览器访问网址http://127.0.0.1:1111

1
2
$ zola build
$ zola serve

捕获-6.PNG

捕获-7.PNG

捕获-8.PNG

文章目录
  1. 1. Zola的安装与使用
    1. 1.1. markdown内容
    2. 1.2. 模板文件
    3. 1.3. 构建与运行