导航页不是静态页——它是我硬编码的 PHP 模板
博客首页放了一个导航页:几张卡片,指向机器人的控制台、协议端面板、文件管理这些入口。很多人以为这是个静态页面,其实不是——它是 Typecho 里的一个独立页面,由一个 PHP 模板渲染。
结构长这样
| 层 | 位置 | 作用 |
|---|---|---|
| 程序 | Typecho | 负责路由和渲染 |
| 模板 | themes/主题/page-nav.php | 全部 HTML、CSS,以及卡片数据 |
| 页面记录 | 数据库里一行 | 只有标题和 slug,内容是空的 |
| 首页设置 | frontPage = page:3 | 让 / 显示这一页而不是文章列表 |
卡片的内容硬编码在模板顶部的一个数组里:
$links = [
['title' => '控制台', 'url' => '...', 'desc' => '...'],
['title' => '面板', 'url' => '...', 'desc' => '...'],
];加一张卡片 = 改这个数组 = 改文件。
为什么不做成纯静态页
明明一个 HTML 文件加 Nginx 配置就能解决的事,为什么要挂在 PHP 系统里?
因为基础设施是现成的:
- 端口、反代、备份策略都已经有了,加一个模板文件零新增成本
- 换域名时只改 Typecho 的站点地址一处,模板里的
$siteUrl会自动跟着变 - 和博客共用一套主题机制,以后换皮不用单独处理导航页
静态页方案我也做过一版,最后没用上——它要求 Nginx 直接托管 HTML、博客挪到子路径,动的比省的多。
代价也很真实
内容不在后台。 想加一张卡片,后台「管理页面」里找不到——那里只有一行标题。必须改文件。
这意味着:
- 手机上改不了(要 SSH 上去编辑)
- 改错了可能白屏(PHP 语法错误没有防护)
- 换主题时它会消失(模板文件在旧主题目录里,新主题没有)
第三条已经实际踩过一次:换主题后导航页直接 404,要把模板复制进新主题目录才恢复。
什么时候该改方案
我给这个设计划了一条线:卡片不超过十张,更新频率以周计,就维持现状。 改文件的成本可以接受。
如果哪天变成:
- 入口几十个个、经常增删 → 应该把卡片数据挪进数据库,做个后台编辑界面
- 多人都要维护 → 必须有后台,不能让每个人都 SSH
- 想要更复杂的首页 → 纯静态站或专门的前端页面,PHP 模板该退了
一个通用原则
这个决策的本质是:复用现有设施,接受它的约束,同时把"什么时候该换"的条件写清楚。
技术选型里没有"永远正确"的方案,只有"在当前规模下正确"的方案。把触发重构的条件提前定好,比争论哪个方案更优雅有用得多。
现在五张卡片,改一次文件两分钟。离重构还远。