Typecho后台自定义仪表盘,简化站长操作
很多Typecho站长每天登录后台,第一眼看到的是默认仪表盘:只有“欢迎”“最近评论”等少量信息,想查服务器状态、待审评论或草稿,还得来回点菜单。**通过自定义仪表盘,可以把高频操作入口集中到首页,减少跳转,让日常维护更顺手。** 下面从零开始,讲清楚怎么改、改哪里、怎么验证。
## 先确认环境和要改的文件
动手前需要满足两个条件:Typecho已经安装并能正常登录后台;你拥有服务器文件管理权限,比如宝塔面板文件管理器或SSH工具。本文以Typecho 1.2.x常见结构为例,不同版本路径可能略有差异,建议先备份。
需要修改的核心文件是当前启用主题的`functions.php`,路径通常在:
```
/var/www/html/usr/themes/你的主题名/functions.php
```
如果使用宝塔面板,可以在“网站 → 根目录 → usr → themes → 当前主题”找到。**改之前先复制一份`functions.php`并重命名为`functions.php.bak`,出错时可快速还原。**
## 给仪表盘挂载自定义面板
Typecho后台仪表盘是通过插件钩子`adminDashboard`来扩展的,我们可以在主题的`functions.php`里注册一个简易面板。打开`functions.php`,在文件末尾`?>`之前(如果没有`?>`就直接追加)加入以下代码:
```php
function theme_dashboard_panel() {
$db = Typecho_Db::get();
$prefix = $db->getPrefix();
// 统计待审评论数
$waiting = $db->fetchRow($db->select(array('COUNT(cid)' => 'num'))
->from('table.comments')
->where('status = ?', 'waiting'));
// 统计草稿数
$drafts = $db->fetchRow($db->select(array('COUNT(cid)' => 'num'))
->from('table.contents')
->where('status = ?', 'draft')
->where('type = ?', 'post'));
echo '';
}
Typecho_Plugin::factory('admin/dashboard.php')->dashboard = 'theme_dashboard_panel';
```
这段代码做了两件事:查询`table.comments`中状态为`waiting`的评论数量,以及`table.contents`中状态为`draft`的文章数量,然后用一个提示框输出到仪表盘。**如果你只想显示其中一项,把对应的查询和输出行删掉即可。**
保存文件后,刷新后台首页。如果页面顶部出现“站点概览”面板,说明挂载成功。若出现空白或报错,优先检查`functions.php`是否有多余空格或缺少分号。
## 让面板更实用:加入快捷入口
只显示数字还不够,可以把常用操作做成链接。把上面`echo`部分替换为:
```php
echo '';
```
这里用`Typecho_Common::url()`生成后台地址,比手写路径更稳妥。**路径中的`manage-comments.php`、`write-post.php`是Typecho后台固定入口,不要改成其他名字。** 保存后刷新,仪表盘应出现三个可点击链接。
## 容易踩坑的几个地方
**第一,不要直接改后台核心文件。** 有些教程让你改`admin/dashboard.php`,升级Typecho后会被覆盖。优先通过主题`functions.php`或独立插件实现。
**第二,数据库前缀不是固定的。** 代码里用`$db->getPrefix()`自动获取前缀,不要硬编码`typecho_`,否则换了前缀就查不到数据。
**第三,权限和缓存问题。** 如果保存后没变化,先强制刷新浏览器(Ctrl+F5),再检查宝塔面板是否开启了PHP缓存或OPcache,必要时重启PHP服务。
**第四,代码位置要正确。** 钩子注册语句必须放在函数定义之后,否则会提示函数未定义。
## 怎么验证改对了
验证分三步:登录后台首页,确认面板文字和数字正常显示;点一下“审核待审评论”链接,能跳到评论管理页;再点“写新文章”,能进入撰写页面。**如果数字明显不对,可以手动去评论列表核对待审数量,确认查询条件是否写错。**
确认无误后,把`functions.php`的备份文件保留在本地,方便下次升级主题时对照。如果后续想恢复默认,把备份文件覆盖回去即可。
## 常见疑问
**改完后台白屏怎么办?** 立即用备份的`functions.php.bak`覆盖原文件,然后逐段检查新加代码,常见原因是漏了分号或引号不匹配。
**能不能显示服务器CPU或内存?** 可以,但需要PHP有执行`shell_exec`等函数的权限,且不同服务器环境差异大,建议先确认空间商是否允许,再考虑用`exec('free -m')`等方式获取。
**这些改动会影响前台吗?** 不会。钩子只在后台仪表盘触发,前台页面不受影响。
**升级Typecho后自定义会丢吗?** 如果代码写在主题`functions.php`里,升级Typecho核心通常不影响;但升级或切换主题时,需要重新把代码加回新主题的`functions.php`。
Typecho后台自定义仪表盘并不复杂,核心就是利用钩子往首页插入自己的信息块。先完成基础面板,再按需加链接和统计项,就能让后台首页更贴合自己的维护习惯。改完后记得验证链接和数字,并保留备份,后续升级才不慌。