Skip to Main Content
404Back to Top

26 September 2026, 16:30 (GMT+8)

2026年09月26日 16:30(东八区 / 北京时间)

网站引擎升级:Zola 0.23.6 + Ametrine tera2 迁移完成 · 看板/归档/热力图修复

概述

本轮把整站从「Zola 0.22 时代」推到 Zola 0.23.6 + Ametrine tera2,并顺手修掉三处长期不舒服的地方:

  1. 引擎与主题升级:主题子仓库由 main 切到同仓库的 tera2 分支,适配 Tera 2;
  2. 模板全量迁移:旧语法(宏导入、宏调用、shortcode、concat 过滤器)逐条改写为新语法,zola build 重新跑通;
  3. 功能修复:看板界面恢复渲染与编辑、归档剔除无标题的空链接、热力图支持月初标记与悬浮日期。

一、为什么要换到 tera2

Zola 0.23.6 内置的模板引擎已经是 Tera 2,它删掉了一批我们一直在用的老写法:

旧写法(Tera 1 / 老主题 main)现状新写法(Zola 0.23.6)
{% import "macros/macros.html" as macros %}标签已移除,直接报 Unknown tag{% component 名字(参数) %} 定义,{{ <名字 参数/> }} 调用
{{ macros::icon(name="x") }}不再是合法表达式{{ <icon name="x"/> }}
`{{ 列表concat(with=另一个列表) }}`过滤器已移除
templates/shortcodes/*.html + {{ 短代码() }}shortcode 机制被组件取代放到 templates/components/*.html
trim_start_matches / slice / filter(attribute=…) / linebreaksbr过滤器已移除trim_start、数组切片 arr[1:-1]、for 循环筛选

结论:只升级 Zola 不动主题,整站会在第一个模板处就编译失败;旧主题 main 与新引擎不兼容,所以必须用为重写而生的 tera2。

二、子仓库与构建环境

# 切换并拉取子仓库新分支
git -C themes/ametrine fetch origin --prune
git -C themes/ametrine checkout -B tera2 origin/tera2
git -C themes/ametrine submodule update --init --recursive

# 构建
zola build          # 或 ./build-site.sh(含加密同步 + 后置校验)

三、站点侧迁移清单

四、主题侧修复(tera2 仍属预发布状态)

tera2 分支自带两处小毛病,已在本地补齐(后续若更新子仓库需重新打补丁,建议同时上报上游):

  1. templates/partials/head.html:[...styles, page.extra.styles] 这类写法在 Tera 2 里是「把数组塞进数组」,会导致每页/每板块的 styles、scripts 渲染成 /[ kanban style.css"] 之类的乱码路径 —— 这正是看板页 CSS/JS 全都没加载、界面只有裸骨架的根因。已改为展开 + 字符串兼容写法;
  2. templates/partials/header.html:404 页没有 section 变量,section.generate_feeds 会直接抛错,已改为 section?.generate_feeds。

五、本轮功能修复

5.1 看板(/kanban/)

5.2 归档(/archive/)

5.3 热力图(归档页 / 文章页 / 看板页)

六、验证

zola build                     # 通过:272 个 HTML 页面
node scripts/verify-kanban-build.mjs   # 通过:5 个看板周页与列表卡片一致

七、已知问题与后续

相关链接:归档 · 周计划看板 · 映射说明 · Ametrine 主题

12 August 2026, 04:00 (GMT+8)