幻蓝小站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 12|回复: 0

Typecho使用AJAX实时获取评论头像

[复制链接]

6851

主题

6854

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
20614
幻蓝 发表于 2022-11-21 13:39:11
前言
刚才在隔壁看到《WordPress使用AJAX实时获取评论头像》,我就想typecho是不是也能实现这个功能呢!

看了《WordPress使用AJAX实时获取评论头像》这个文章后,我理解到,它实际就是给模板内置了个api,通过ajax请求这个api来实时获取邮箱头像地址。懂了原理就简单了

PHP部分
此代码添加到主题functions.php文件
  1. function themeInit($archive)

  2. {

  3. if(isset($_GET['action']) == 'ajax_avatar_get' && 'GET' == $_SERVER['REQUEST_METHOD'] ) {

  4. $host = 'https://secure.gravatar.com/avatar/';

  5. $email = strtolower( $_GET['email']);

  6.             $hash = md5($email);

  7.            $sjtx = 'mm';

  8. $avatar = $host . $hash . '?d='.$sjtx;

  9.         echo $avatar;

  10.         die();

  11.     }else { return; }

  12. }
复制代码

如果你的模板已经添加过了themeInit,那么只要向themeInit内部添加if部分即可。

JS部分
此代码添加到主题js文件
  1. $("input#email").blur(function() {

  2.   var _email = $(this).val();

  3.   if (_email != '') {

  4.     $.ajax({

  5.       type: 'GET',

  6.       data: {

  7.         action: 'ajax_avatar_get',  

  8.         form: ajaxurl, // 修改为你的Ajax路径

  9.         email: _email

  10.       },

  11.       success: function(data) {

  12.         $('.avatar').attr('src', data); // 修改为你自己的头像标签

  13.       }

  14.     }); // end ajax

  15.   }

  16.   return false;

  17. });
复制代码

代码中的input#email和.avatar需要根据自己的模板进行适当修改,代码中的ajaxurl可以直接写自己博客地址,或者当前文章地址也行,可以用js获取地址,也可以直接写死。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|幻蓝小站 ( 黔ICP备18008076号-1 )|网站地图

GMT+8, 2022-12-3 01:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表