jdeal主题修复
2025-03-23 更新
41 阅读
这款主题适配 1.1 版本,一个多月来我断断续续熬了若干个夜晚,一门心思想着兼容 1.2 版。
问题有:
- PHP 不兼容 8.1,部分函数报错。(已修复)
- 评论提交内容为空时报错,这是最棘手最耗时。(己解决)
- 游客修改、删除评论报错。(尚未解决)
- 说说页面刷新后 js 有个函数报错。(尚未解决)
第一个问题好解决,第二个问题具体表现是:当提交一个内容为空的评论或者名称、邮箱为空时报错。这是优先级最高的问题,假设了多种可能并偿试修改均失败😔,仔细阅读 js 代码是通过读取返回的服务器状态来决定走向的,这一点也从 jdeal 那里得到证实,他说 1.1 版返回错误码 403,1.2 版返回错误码 500。
但对 typecho 源文件不了解也就毫无头绪,无从下手。百度搜索也没有可参考的,试着将 JS 中 403 改为 500,结果还是太天真了😮💨,根本不是那么简单。
无奈之下搭建了两个站点,分别是 1.1 和 1.2 来对比不同之处,给 js 加了调试输出开干,别说这招还真尼玛管用,这一对比发现问题所在了,1.1 版返回的错误带 HTML 结构,主题 JS 也正是利用这一点读取title
若为 error
则执行下一个分支,而 1.2 版返回的状态无 html 结构/,直接是一个数字 500,所以会报错。
知道原因了就开始想法解决,采用最笨的办法挨个看源文件,最终在var/typecho/common.php
发现一个error
函数,参照 1.1 版修改后问题解决🤗。
第三个问题表是发布评论后修改或删除提示失败,实际是成功的,刷新可见修改后的内容,js 仍会将返回的服务器状态 404 置为 200,但这一步没有成功执行。怀疑也跟返回错误状态有关,但不知道除 common 以外还有哪个文件负责返回错误。
Life is like a Design.