喵喵小站・博客志 - 头像
type: channel
link: https://www.mmbkz.cn/tag/%E5%A4%B4%E5%83%8F/
items: 对于JOE主题，使用自定义头像，解决部分评论没有头像的问题

对于JOE主题，使用自定义头像，解决部分评论没有头像的问题
type: item
date: 2021-11-02T18:01:00+08:00
description: 方案一博客使用经常会遇到有的评论没有头像，直接返回显示Gavatar默认的头像，不仅难看的要死，还没办法更改，严重影响美观（比如我这半个强迫症+半个完美主义者），而且joe主题默认判断使用的是qq头像，使用了qq邮箱的Gavatar头像就不会显示了，因此为了解决这个问题，我折腾了好久才解决（主要是不会qaq步骤1对于joe7.x主题定位到主题目录下文件\Joe\core\function.php，查找/* 通过邮箱生成头像地址 */将内容替换成以下：/* 通过邮箱生成头像地址（火喵改） */ function _getAvatarByMail($mail) { $gravatarsUrl = Helper::options()->JCustomAvatarSource ? Helper::options()->JCustomAvatarSource : 'https://gravatar.cooluc.com/avatar/'; $mailLower = strtolower($mail); $md5MailLower = md5($mailLower); $qqMail = str_replace('@qq.com', '', $mailLower); $uri = 'https://cdn.helingqi.com/wavatar/' . $md5MailLower . '?d=404'; $headers = @get_headers($uri); if (preg_match("|200|", $headers[0])) { echo $gravatarsUrl . $md5MailLower . '?d=mm'; } elseif (strstr($mailLower, "qq.com") && is_numeric($qqMail) && strlen($qqMail) < 11 && strlen($qqMail) > 4) { echo 'https://thirdqq.qlogo.cn/g?b=qq&nk=' . $qqMail . '&s=100'; } else { echo '自定义头像地址'; } }建议将之前的内容注释掉，不要删除。步骤2定位到主题目录下文件\Joe\core\core.php，查找/* 通过邮箱生成头像地址 */将内容替换成以下：/* 通过邮箱生成头像地址（火喵改） */ function _getAvatarUrlByMail($mail) { $gravatarsUrl = Helper::options()->JCustomAvatarSource ? Helper::options()->JCustomAvatarSource : 'https://gravatar.cooluc.com/avatar/'; $mailLower = strtolower($mail); $md5MailLower = md5($mailLower); $qqMail = str_replace('@qq.com', '', $mailLower); $uri = $gravatarsUrl . $md5MailLower . '?d=404'; $headers = @get_headers($uri); if (preg_match("|200|", $headers[0])) { return $gravatarsUrl . $md5MailLower . '?d=mm'; } elseif (strstr($mailLower, "qq.com") && is_numeric($qqMail) && strlen($qqMail) < 11 && strlen($qqMail) > 4) { return 'https://thirdqq.qlogo.cn/g?b=qq&nk=' . $qqMail . '&s=100'; } else { return '自定义头像地址https://cat.dorcandy.cn/000pages/api/api-mc.php'; } }保存好刷新查看效果。其他有的主题版本在core.php中无法找到关键词，找不到就直接跳过，无需修改文件即可。简单的原理就是，依据邮箱去查找是否存在头像，如果不存在会返回状态码404，依据状态码的不同来判断。但是我这样设置完，网站加载变得异常迟钝，不知道原因所在，希望有大佬赐教，感谢。图片地址可以使用api地址，譬如火喵博客的MC酱API。可以尝试使用随机函数，比如'images/'.rand(1,5).'.jpg'方案二方案一虽然完美，但是使用此方法会被发送大量的请求，如果页面的头像数据多，会导致网站相应及其缓慢…