Typecho 后台管理界面美化插件 (Admin Beautify) - 重塑博客写作体验
前言
自从上次更新 Typecho 1.3.0 docker 版之后,很多插件都不再适配,写博客的日子突然变得难受起来。习惯了之前优化的页面,再使用原版的页面就感觉有点干。
因为升级而无法使用的插件和功能:
- WangStyle v6.3.0 - 小王先森,WangStyle是一款即插即用的typecho后台美化插件,后台界面错乱
- AliOssForTypecho v1.0.0 - TeohZY, 阿里云 OSS 文件上传插件,附件无法上传,文件页面报错
- Initial 主题的轻语模块不显示(首页和侧栏)
归档和友链一开始以为是 VOID 主题附带的功能,后面发现更换成 Initial 主题模板文件依然存在。所以猜测应该是 Typecho 框架自带的功能。
刷公众号的时候,突然发现一个 Admin Beautify 的 typecho 美化插件,忍不住试了一下。有点小炫酷。

插件选择
安装之后发现,插件节目上还有一个 AB 插件仓库,这也是一个独立的插件。安装之后可以跳转到 AB 自己维护的一个插件库。
我列举一下我安装启用的插件:
- PicUp for Typecho,支持配置 N 多个对象存储方案,解决当前阿里云 OSS 无法上传的问题,必选
- GateLogin - 6款精美登录模板,让您的登录页面更具个性,看了介绍页面非常炫酷,必选
- BingIndexNow - Typecho发布文章时自动推送到Bing站长平台,SEO 相关,必选
- Sitemap v1.0.5 - 社区维护版,生成 sitemap.xml 站点地图,之前有一个低版本的,相当于升级,可选
- ThemePluginManager - 插件与主题管理器,后台上传插件和主题压缩包,可选
- Robots++ - 蜘蛛来访记录,之前有过,可选
- Smart Gallery - 一款专为 Typecho 设计的现代相册管理插件,配置简单,可选
还有一些其他的,我没考虑,或者安装之后又删除了:
- AB Avatar - 专用头像管理插件 · Gravatar 代理,与 Initial 主题自带的头像代理冲突
- Links+ - 友情链接管理插件,Material Design 3 风格,需要付费
- LinkGo - 外部链接自动跳转插件,预览图感觉没有我现有的 ShortLinks v1.2.1 好看,样式多
- UEditor+ for Typecho - xx 支持腾讯云和又拍云,不支持我需要的阿里云 OSS,界面也不适配
- TinyMCE 8 for Typecho - 一款专为 Typecho 1.3.0 深度定制的 TinyMCE 8.4.0 富文本编辑器插件,安装之后,点击上传的附件,不能自动插入到编辑器中
问题优化
DPlayer 插件加载 js、css 缓慢
前台页面,控制台发现 DPlayer 的资源访问缓慢,看到使用了 CDN 的资源。
github 找到了解决的 issue,里面有一个 DPlayer-Typecho-feat-static-resource.zip,下载之后文件夹需要修改为 DPlayer 再替换上传。解决。
Smart Gallery 点击无法正常弹出框,显示相册图片
添加了一个电影海报的相册,然后新增独立页面内容 \[gallery\](这里已转义,不显示),然后前台就可以看到相册了。但无法点击,控制台显示找不到弹框方法:Uncaught ReferenceError: sgOpenModal is not defined。另外还有一个 js 解析语法错误:发现 if (/^https?:\/\/[^\/]+\/api\ return false; },和代码里不一致,没有完整显示。
让 chatgpt 分析了一下,
本身 JS 是合法的。
但是在 Typecho 输出链里(尤其老主题 + HTML 压缩/过滤)很容易被破坏。
这是 Typecho 老插件在 PHP 输出 JS 时很常见的兼容坑。你这个不是 API 判断逻辑错误,而是 JS 输出被破坏导致整个脚本块失效。
不要使用 JS 正则字面量,改成 RegExp。
if (/^https?:\/\/[^\/]+\/api\//i.test(url)) return true;
# 改为
if (new RegExp('^https?:\\/\\/[^\\/]+\\/api\\/','i').test(url)) {
return true;
}后发现 docker 映射出来的插件代码没有生效,进入到容器中发现,代码没有预期的同步进来。通过 docker cp 覆盖,解决。
initial 主题配置,修改在首页显示最新的“轻语”,提交之后不生效
Typecho 1.3.0 对主题配置表单保存机制调整导致的兼容性问题
主题初始化后添加复选框选项无法保存,github 上有提到相关的,checkbox 修改不生效的问题:
fix: adding checkbox options after theme initialization cannot be saved.#1591
https://github.com/jielive/initial/blob/2.5.5/functions.php 中定义的的 themeConfig 方法
$ShowWhisper = new Typecho_Widget_Helper_Form_Element_Checkbox('ShowWhisper', array('index' => _t('首页'), 'sidebar' => _t('侧边栏')), NULL, _t('显示最新的“轻语”'));
$form->addInput($ShowWhisper->multiMode());Initial 2.5.5 的 checkbox 默认值 NULL 与 Typecho 1.3.0 新表单处理不兼容。
将第三个参数的 NULL 改成 array() 可以解决。
为什么已经提了 PR 修复,主题保存还是有问题呢?
PR #1591 修复的是 Typecho 核心在特定情况下丢失 checkbox 配置的问题,但它不是让所有旧主题写法永久兼容。
Typecho 1.3.0 的 PR #1591 没有失效,它修的是核心初始化流程;Inital 2.5.5 是 2017 年左右的主题,使用 NULL 作为 checkbox 默认值,在新版 Form 处理下属于旧主题兼容问题。
大概能解释,具体还要看详细的代码是怎么写的。这里解决问题就好。
友链不能正常显示
在家了相册插件之后,今天发现友链显示没有内容。但后台编辑可以看到 links 变量是有数据的。
通过一系列的数据库排查,发现有两个 links 变量的 cid,然后发现是之前相册不生效,当时自定义模板选择了链接进行测试,忘记修改回去导致的...
相册的自定义模板选择 不选择保存,解决。
initial 公共静态资源来源三个选择项经常访问不了
initial 主题目前支持 jsDelivr、Staticfile、CDNJS,默认jsDelivr,若JS文件异常,可尝试切换来源。但这是三个源经常突然的访问不了,导致页面加载 20 多秒还没有结果。
目前无法解决。
hitokoto “一言”经常性获取不到数据
页面内容下的“一言”偶发性的获取不到数据,显示 :D 获取中...。
目前无法解决。可以去掉。
i.see.you 域名下的一个头像,加载 5.24s
访问地址:i.see.you 头像
感觉是 AB 插件带过来的,AB 还是持续性地将站点信息统计发送到作者的服务器。
目前无法解决,继续观察。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
海滨擎蟹
微信
支付宝