今天我注意到一个很严重的问题,就是这个博客的显示的头像,好像全都是默认的头像
然后在网上找了一圈,发现主要问题是博客会直接从
https://secure.gravatar.com
http://www.gravatar.com
这两个网站获取用户头像,但是有个比较严肃的问题,就是这两个网站国内访问速度极慢极慢(基本属于被墙了的那种)
然后,我就想到了一个方法,我可以自己弄一个头像库,然后每次都随机加载用户头像,我感觉这样子说不定会比较好
因为,讲道理,我感觉应该没什么人会去注册一个gravatar的头像吧
说干就干!首先先从B站上找到原神角色的证件照,具体的东西咱就不发出来啦,因为按照米哈游的用户协议,再次发布是不可以的
然后,就到了本次最大的坑的地方了,就是找到网页上显示头像的位置
这里面的坑很大
非 常 大
首先,我找到了位于 /var/Typecho 目录之下的 Common.php 文件,并且在其中找到方法 gravatarUrl ,方法代码如下:
public static function gravatarUrl(
?string $mail,
int $size,
?string $rating = null,
?string $default = null,
bool $isSecure = true
): string {
if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {
$url = __TYPECHO_GRAVATAR_PREFIX__;
} else {
$url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com';
$url .= '/avatar/';
}
if (!empty($mail)) {
$url .= md5(strtolower(trim($mail)));
}
$url .= '?s=' . $size;
if (isset($rating)) {
$url .= '&r=' . $rating;
}
if (isset($default)) {
$url .= '&d=' . $default;
}
return $url;
}
你可以看到这里面很明显地定义了关于头像的URL的信息
所以,我修改了这个里面的信息,然后保存,然后刷新页面,发现并没有改变
用户评论头像还是一个大G
看来,用户头像的获取地址并不是这个
然后,我注意到我正在使用的这款主题 handsome,难道是主题文件里面设置了头像吗!
然后在主题文件里一顿乱找,发现了一个文件 comments.php , 这个文件位于usr/themes/handsome/component下,在这个文件里面,通过搜索关键字 img 能够定位到一条语句
<img class="author-avatar" src="<?php echo Utils::getAvator($this->remember('mail',true),65) ?>" nogallery/>
可以看出,通过PHP方法从Utils类里面的getAvator方法中获取了用户头像。
然后,在usr/themes/handsome/libs 路径之下找到 Utils.php 类文件
在这个类文件之中,有方法getAvator
你可以通过搜索的方式找到这个方法
然后,将方法里面的东西全部都注释掉,添加以下代码:
$avatorSrc = 'https://example.com/avatar/' . rand(100, 167) . '.jpg';
return $avatorSrc;
我这里是定义了几张图片,图片名从100.jpg 到167.jpg,按照顺序排列的。
你可以使用和我这样类似的逻辑,或者使用其他方法来实现~
更改完成后保存,刷新页面,就可以发现评论区的人有随机头像了
就是,因为这个更改了评论区头像的现实逻辑,就导致了一个致命的问题
就是评论人和头像之间的关系就没有了
就算是同样的用户,也会显示不同的头像
甚至是咱自己评论,显示的也是随机的头像
所以,慎用哈
4 comments
甚至,就算是咱自己来评论,显示的也是随机头像
就算是同样的用户,显示的头像也会是不一样的
包括回复框框,头像也是随机的
这个是随机头像!