页面打开是 500,怎么判断是不是模板文件的问题?

最后更新时间:2026-09-22 19:05:50

1. 先记住一句话:模板不存在会直接 500

当前版本的模板解析没有做存在性检查和兜底。配了一个不存在的模板名,页面不会优雅降级到默认模板,而是直接 500。所以「改了栏目配置之后某个页面突然 500」的 first suspect 就是模板名写错了。

2. 模板是怎么被选出来的

系统按页面类型决定用哪个模板,并且可以被栏目或内容上的字段覆盖

页面类型默认模板覆盖字段
栏目列表页category.html栏目的 template 字段
栏目单页page.html栏目的 c_template 字段
内容详情页article.html内容的 template 字段
特殊页面按页面选项匹配由内置的页面选项规则决定

规则是优先用覆盖字段,没配才回落到默认模板。所以排查时两边都要看:栏目的 template 有没有填错,以及主题里到底有没有那个文件。

3. 排查顺序

  1. 确认是哪个页面 500。首页正常但栏目页 500 → 问题在栏目模板;详情页 500 → 在内容模板。
  2. 检查栏目/内容的模板字段。后台打开对应栏目或内容,看 template 字段填的是什么,有没有拼写错误、多了后缀、或者填了别的主题才有的名字。
  3. 确认主题里真有这个文件。模板位于主题的 views/ 目录下。
  4. 确认改的是当前启用主题。系统用的是当前主题目录,改了别的主题完全没用。
  5. 看日志里的渲染错误。模板语法错误同样会导致 500,但只会体现在日志里。
  6. 清空模板字段让它回落默认。快速验证法:把覆盖字段清空,如果恢复正常,就确认是模板名的问题。

4. 主题至少要有这几个模板

一个能跑通基本浏览的主题,views/ 下至少要有:

  • index.html(首页)
  • category.html(栏目列表)
  • article.html(内容详情)
  • page.html(单页)
  • 404 页

上传主题包时目前只校验是否包含 info.jsonviewsstatic不会校验必需模板是否齐全。所以一个缺了 article.html 的主题也能装上,但一点开详情页就 500——这是很典型的「安装成功、用起来崩」。

5. 开发时的建议

  • 别急着填覆盖字段。先把默认模板跑通,再按需要覆盖。
  • 覆盖字段填之前先确认文件存在,这是 500 的头号来源。
  • 开发期打开 view_reload,模板错误能显示详细信息,排查快很多。
  • 上线前逐类页面点一遍:首页、栏目页、详情页、单页、搜索页、404。模板往往是共用的,但数据分支不同,只测首页很容易漏。