今天我注意到一个很严重的问题,就是这个博客的显示的头像,好像全都是默认的头像

然后在网上找了一圈,发现主要问题是博客会直接从
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,按照顺序排列的。
你可以使用和我这样类似的逻辑,或者使用其他方法来实现~

更改完成后保存,刷新页面,就可以发现评论区的人有随机头像了

目前发现的BUG
就是,因为这个更改了评论区头像的现实逻辑,就导致了一个致命的问题
就是评论人和头像之间的关系就没有了
就算是同样的用户,也会显示不同的头像
甚至是咱自己评论,显示的也是随机的头像

所以,慎用哈

Last modification:August 3, 2023
如果觉得我的文章对你有用,请随意赞赏