梦泽-MengZe2 发表于 2023-10-31 12:42:43

typecho将Gravatar头像改为QQ头像

本帖最后由 MengZe2 于 2023-11-1 16:44 编辑

前言
原贴地址:https://cloud.tencent.com/developer/article/1667850
相信大部分做过网站的朋友都知道,Gravatar是一个全球性的头像设置平台,除中国以外大部分网站都是调用的此平台头像,但因为我们伟大的祖国有一般人射不穿的城墙(网友们都懂的๑乛◡乛๑),所以用这个头像平台的用户很少,导致大部分使用此头像平台的网站,评论区总会有很多Gravatar 官方头像。

https://www.zzwws.cn/usr/uploads/2019/06/394415904.png

定位文件
找到主题下的`comments.php`文件,查找关键字`gravatar`
我们会发现下面一段语句

<?php $comments->gravatar('40', ''); ?>

https://www.zzwws.cn/usr/uploads/2019/06/1995900091.png
果断删掉`$comments->gravatar('40', '');`,再去文章页刷新一看,头像果然消失了,这时我们再重新输出一个 img 标签就好了。
接下来搞定头像获取就好啦,去数据库看了看,存邮箱的字段名是 `mail`,所以获取内容应该是`$comments->mail;`,先 `new `个变量获取下邮箱吧`$number=$comments->mail;`。

接下来就好说了,把接口里的"QQ 号"改为"`$number`",然后 `echo` 一下就好啦。


<span itemprop="image"><?php $number=$comments->mail; echo 'https://q2.qlogo.cn/headimg_dl? bs='.$number.'&dst_uin='.$number.'&dst_uin='.$number.'&;dst_uin='.$number.'&spec=100&url_enc=0&referer=bu_interface&term_type=PC'; ?></span>
<span itemprop="image"><?php $number=$comments->mail; echo 'https://q2.qlogo.cn/headimg_dl? bs='.$number.'&dst_uin='.$number.'&dst_uin='.$number.'&;dst_uin='.$number.'&spec=100&url_enc=0&referer=bu_interface&term_type=PC'; ?></span>


https://www.zzwws.cn/usr/uploads/2019/06/1973689727.png

总结
即用第二条语句把原来的`<?php $comments->gravatar('40', ''); ?>`替换掉即可。

效果
https://www.zzwws.cn/usr/uploads/2019/06/1599283380.png

更新

在通常情况下,当用户输入了QQ邮箱,我们的头像才会调用为QQ头像。但是假如用户使用的是163邮箱或者是其他邮箱,那么头像肯定会显示失败。那么该怎样解决这个问题呢?其实也很简单,我们放个if判断语句就行了。先判断输入的邮箱是不是QQ邮箱,如果是调用QQ邮箱,如果不是则调用Gravatar头像或者其他的静态头像,或者随机头像即可。

更新代码

<?php
    $number=$comments->mail;
    if(preg_match('|^\d{4,11}@qq\.com$|i',$number)){
      $number = str_replace('@qq.com','',$number);
      echo 'https://q.qlogo.cn/headimg_dl?dst_uin='.$number.'&spec=40';
    }else{
      $comments->gravatar('40', '');
    }
?>

梦泽-MengZe2 发表于 2023-10-31 12:43:49

本帖最后由 MengZe2 于 2023-11-1 06:42 编辑

换了个新风格发帖,我不是原创!搬运自我自己的博客,网络上这种教程很多,所以我不是原创
页: [1]
查看完整版本: typecho将Gravatar头像改为QQ头像