本站构建说明
生成器、目录结构、页面格式与发布流程。
一句话
本站是静态站点:Markdown + YAML 经生成器编译成一堆 HTML, 服务器上只有 nginx 静态文件,没有 PHP、没有数据库。
目录结构
site/
├── build.py # 生成器(唯一入口)
├── data/
│ ├── nav.yml # 页面树(唯一真源)
│ └── items.yml # 预留:物品数据(后续从插件配置导出)
├── templates/layout.html # 页面模板
├── assets/ # style.css / wiki.js / logo.svg
└── content/ # 正文,路径即 URL
├── index.md → /
├── servers/scn.md → /servers/scn/
└── items/miyu/chen-feng-bang.md → /items/miyu/chen-feng-bang/
构建
cd site
python3 build.py # 产物在 ../dist
python3 build.py --report # 额外打印待填充页与红链清单
依赖:Python 3.14 + PyYAML + Jinja2(构建机已具备,无需 pip 安装)。
页面树是唯一真源
data/nav.yml 里出现的每个 path 都会生成页面:
content/<path>.md存在 → 渲染正文;- 不存在 → 自动生成「待填充」占位页,并把
nav.yml里写的sections章节列成清单。
所以加页面只改 nav.yml,导航、面包屑、搜索索引全部自动跟上,不会出现手工漏登记。
合成表数据管线
合成表页不是手写的,由数据管线生成:
python3 tools/gen_recipes.py # 线上 EcoItems 配置 → data/recipes.yml + 重写 nav.yml 的合成表段
python3 build.py # 渲染成一个个配方页
- 输入:
../data-raw/(只读抓取的craftable: true物品配置、物品名映射、原版官方zh_cn.json); - 输出:
data/recipes.yml(44 条配方数据集)+data/nav.yml里带GENERATED:RECIPES标记的一段; - 配方页由
build.py按recipe_id渲染(信息框 + 3×3 网格 + 材料清单 + 配置提示); - 想在某个配方页加额外说明,就在
content/recipes/<slug>.md写正文,会追加在生成内容后面; - 配置改动后重跑这两条命令即可同步,不要手改生成出来的页面。
常用标记语法
| 写法 | 效果 |
|---|---|
[[items/miyu/chen-feng-bang]] | 站内链接(自动解析成 URL,缺失则标红) |
[[path|显示文字]] | 带显示文字的站内链接 |
:::note 标题 … ::: | 提示框(还有 tip/warning/danger/info) |
| 列1 | 列2 | | 表格 |
# ~ ###### | 标题(自动生成锚点与右侧目录) |
| 直接写 HTML | 原样输出,用来排卡片、画廊 |
数据字段
front matter 里可用的结构化字段:
| 字段 | 用途 |
|---|---|
title / summary / tags | 页面标题、摘要、标签 |
infobox | 右侧信息框(rows / groups / image / subtitle) |
item.effects | 词条列表,渲染成带颜色的效果块 |
recipe.grid + recipe.result | 合成配方,渲染成 3×3 工作台网格 |
tooltip | 站内链接悬停提示(不写则用 infobox 自动拼) |
发布流程
本地产出 dist/ → 打包 → 走 /srv/web/bin/30-deploy.sh wiki <版本> <源码目录> → 切 current 软链 → reload nginx。回滚用 40-rollback.sh wiki。详见运维台账。