序言
记录一下Typecho 从1.2升级到1.3过程后的一些修补,有一些是typecho本身的问题,还有一些是JOE主题好久不更新了,似乎和1.3版本有一些不兼容。这个主题是我一直用的,很喜欢,多少年了,虽然也知道不更新一直下去不是事,但是也测试了好多其它的主题,一个能打的都没有。也只能将就着,修修补补继续用吧~
JOE主题地址(感谢作者):JOE
一、修补记录表
1、头像问题
Typecho默认使用的是Gravata头像,Gravatar大多数的链接在国内都被墙了,加载失败不说,还影响博客加载速度。一般修改有两种方式,一种直接改主题,另一种改typecho的源码,我这里是直接改源码,当然修改的cravatar链接是一样的
打开:/typecho/var/Typecho/common.php,找到 gravatarUrl(大概856行)
之前一直用cn,挺好的,最近发现cn的ssl过期了,短时间内似乎未更换,后来发现com也可以用,直接就切换过来了
改为这个:$url = $isSecure ? 'https://cravatar.com' : 'https://cravatar.cn';
另外在推荐一个,也比较稳定:https://cravatar.com/
2、独立页面的链接无法正常生成或获取;侧边栏“随机文章”小工具中,文章条目的链接异常。(joe主题bug)

升级到1.3之后发现,独立页所有的链接统一指向主页,都失效了。
核心原因:Typecho核心版本的升级可能引入了新的函数或更改了某些函数的调用方式,导致旧版主题中部分兼容代码失效。修复的重点在于更新主题中生成链接的相关代码,确保其与新版Typecho兼容。
涉及文件:usr/themes/Joe/public/header.php:此文件通常包含网站的头部信息,独立页面的链接生成可能与此相关。usr/themes/Joe/core/function.php:这是主题的功能函数文件,常用于扩展主题功能,"随机文章"这类小工具的逻辑很可能定义于此。
解决办法:下载这里提供的两个修正过的文件替换原文件即可:
下载地址(回复可见):
3、后台css显示异常(joe主题bug)

解决办法:定位到\admin\css\style.css文件,搜索.typecho-post-area .description,在之后的代码中将其修改成这样即可:
替换完成之后保存然后ctrl+f5刷新网页,就可以看到后台生效了。
4、搜索时不会出现搜索关键词的修复(joe主题bug)

解决办法:
找到usr/themes/Joe/archive.php并打开,找到第25行,如下图所示:
将_keywords改为archiveTitle即可,改后如下:
再试着搜索一下,正常了:
5、给后台撰写文章添加“常用标签选择”功能:

修改./admin/write-post.php文件内的如下代码
<section class="typecho-post-option">
<label for="token-input-tags" class="typecho-label"><?php _e('标签'); ?></label>
<p><input id="tags" name="tags" type="text" value="<?php $post->tags(',', false); ?>"
class="w-100 text"/></p>
</section>{/tabs-pane}
{tabs-pane label="修改后的代码"}
<section class="typecho-post-option">
<label for="token-input-tags" class="typecho-label"><?php _e('标签'); ?></label>
<p>
<input id="tags" name="tags" type="text" value="<?php $post->tags(',', false); ?>" class="w-100 text" />
<style>
.tagshelper { margin-top: 15px; }
.tagshelper-list { list-style: none; border: 1px solid #D9D9D6; padding: 6px 12px; max-height: 240px; overflow: auto; background-color: #FFF; border-radius: 2px; }
.tagshelper a { cursor: pointer; padding: 2px 6px; margin: 2px 2px; display: inline-block; border-radius: 2px; text-decoration: none; border: 1px solid #e2e2e2; background: #f9f9f9; font-size: 13px; color: #666; }
.tagshelper a:hover { background: #467B96; color: #fff; border-color: #467B96; }
</style>
<?php
$tagsWidget = Typecho_Widget::widget('Widget_Metas_Tag_Cloud', 'sort=count&desc=1&limit=200');
$tagsHtml = '';
if ($tagsWidget->have()) {
while ($tagsWidget->next()) {
$tagName = $tagsWidget->name;
$safeName = addslashes($tagName);
$tagsHtml .= "<a onclick=\"$('#tags').tokenInput('add', {id: '{$safeName}', tags: '{$safeName}'});\">{$tagName}</a>";
}
} else {
$tagsHtml = '暂无标签';
}
?>
<script>
window.addEventListener('load', function() {
if (typeof $ !== 'undefined') {
var tagsList = <?php echo json_encode($tagsHtml); ?>;
var container = '<div class="tagshelper">常用标签选择:<div class="tagshelper-list">' + tagsList + '</div></div>';
$('#tags').after(container);
}
});
</script>
</p>
</section>{/tabs-pane}
问题2&3解决办法来源于此作者宗同学,感谢!
问题4解决办法来源于此作者JAVA小学生,包括使用的优化版JOE主题也是来自于他,感谢!
其它还有一些小毛病修改的时候忘了记录了,后期想起再补上~
二、一些美化,基于JOE主题
1、头像呼吸光环和鼠标悬停旋转放大
主题全局设置自定义CSS中,填入如下代码:
/*头像七彩霞云*/
.avatar {
border-radius: 50%;
animation: light 4s ease-in-out infinite;
transition: 0.5s;
}
.avatar:hover {
transform: scale(1.15) rotate(720deg);
}
@keyframes light {
0%{box-shadow: 0 0 4px #f00;}
25%{box-shadow: 0 0 16px #0f0;}
50%{box-shadow: 0 0 4px #00f;}
75%{box-shadow: 0 0 16px #0f0;}
100%{box-shadow: 0 0 4px #f00;}
}2、黑夜模式下LOGO显示的问题
JOE主题可以切换白天黑夜模式,可是黑夜模式下LOGO显示的是某个svg而不是我们网站的logo,如下:
需要修改的文件:/joe/assets/css/joe.mode.min.css
有两处地方需要修改:
改完后保存css文件,清空浏览器缓存,有CDN的还要清空一下CDN,刷新页面:


首页二级导航也会失效。当初直接php7.4+typecho1.2.1升级8.2+1.3.0 。不过夜间模式我是logo直接消失了哈哈
为了找到这个暗黑模式下的LOGO位置,我扒了CSS文件整整一个多小时才找到。