• 内容详情
  • RiPro默认注册是没有头像的,要么用户自己上传,要么用QQ登录,然后用户选择QQ头像,这样感觉有点不方便,这里就分享下用户默认头像为字母头像,自动根据用户名首字母获取指定头像。

    效果如下:

    RiPro网站主题自动修改用户默认头像为字母头像免插件手动纯代码修改

    教程:

    本次修改主要在 ripro –> inc ->  theme-functions.php  文件中修改

    1. 搜索“function _the_theme_avatar()”,将该 function 函数替换为如下代码

    
    class NameFirstChar {
        /*构造器*/
        public function __construct($name, $convertNum=true, $default="#"){
            $this->_name = $name;
            $this->_convertNum = $convertNum;
            $this->_default = $default;
            $this->firstChar = $this->getFirstChar();
        }
        /*待查找首字符的名字*/
        private $_name;
        /*是否转换数字为字母*/
        private $_convertNum;
        /*缺省返回值*/
        private $_default;
    	 /*查找结果值*/
        public $firstChar;
        /*应字母的GB2312中文起始计算码*/
        private $_pinyinLetters = array(
            176161 => 'A',
            176197 => 'B',
            178193 => 'C',
            180238 => 'D',
            182234 => 'E',
            183162 => 'F',
            184193 => 'G',
            185254 => 'H',
            187247 => 'J',
            191166 => 'K',
            192172 => 'L',
            194232 => 'M',
            196195 => 'N',
            197182 => 'O',
            197190 => 'P',
            198218 => 'Q',
            200187 => 'R',
            200246 => 'S',
            203250 => 'T',
            205218 => 'W',
            206244 => 'X',
            209185 => 'Y',
            212209 => 'Z',
        );
        /*0-9 对应字母,取数字的英文首字母*/
        private $_numLetters = array(
            0 => 'Z',
            1 => 'O',
            2 => 'T',
            3 => 'T',
            4 => 'F',
            5 => 'F',
            6 => 'S',
            7 => 'S',
            8 => 'E',
            9 => 'N'
        );
        /* 二分搜索法查找GB2312计算码对应字母*/
        private function dichotomyLetterSearch($code){
            $keys = array_keys($this->_pinyinLetters);
            $lower = 0;
            $upper = sizeof($this->_pinyinLetters)-1;
            $middle = (int) round(($lower + $upper) / 2);
            if ( $code < $keys[0] ) return -1;
            for (;;) {
                if ( $lower > $upper ){
                    return $keys[$lower-1];
                }
                $tmp = (int) round(($lower + $upper) / 2);
                if ( !isset($keys[$tmp]) ){
                    return $keys[$middle];
                }else{
                    $middle = $tmp;
                }
                if ( $keys[$middle] < $code ){
                    $lower = (int)$middle + 1;
                }else if ( $keys[$middle] == $code ) {
                    return $keys[$middle];
                }else{
                    $upper = (int)$middle - 1;
                }
            }
            return -1;
        }
        /*获取字符串首字母或数字字符*/
        private function getFirstChar(){
            if(preg_match('/^[a-zA-Z]/', $this->_name)){
                //TODO $this->prefixType = "Letter"
                return $this->_name[0];
            }elseif(preg_match('/^[0-9]/', $this->_name)){
                //TODO $this->prefixType = "Number"
                return $this->_convertNum ? $this->_numLetters[$this->_name[0]] : $this->_name[0];
            }elseif (preg_match('/^[一-龥]/', $this->_name)) {
                //TODO $this->prefixType = "Chn"
                if(!$str = iconv( 'utf-8', 'gb2312', $this->_name )){
                    return $this->_default;
                }
                $code = ord( substr($str, 0, 1) ) * 1000 + ord( substr($str, 1, 1) );
                if(($i=$this->dichotomyLetterSearch($code)) != -1){
                    return $this->_pinyinLetters[$i];
                }
                return $this->_default;
            }
            return $this->_default;
        }
        /*转换首字符为大写*/
        public function toUpperCase(){
            return ucfirst($this->firstChar); // Sharp
        }
    }
    

    2. 搜索“// 判断头像类型”,在其上方添加如下代码(共2处)

    
    $instance = new NameFirstChar($user->data->display_name, true, "Sharp");
    $firstLetter = $instance->toUpperCase();
    

    3. 搜索“_the_theme_avatar()”,将其替换为如下代码(共4处)

    
    get_stylesheet_directory_uri() . '/assets/images/avatar/'.$firstLetter.'.png'
    

    4. ripro –> inc -> admin -> page -> index.php 文件,第107行修改为如下代码

    
    <div class="layui-status-img"><a href="javascript:;"><?php echo get_avatar($userss->user_email); ?></a></div>
    

    5.删除 ripro –> assets –> images 下的 avatar 文件夹内的图片,替换为下面压缩包内的图片

    1. 全库网所有资源均来源于用户上传和网络,如有侵权请发送邮箱联系站长处理!
    2. 如果你有好的资源或者原创教程,可以到审核区投稿发布,分享会有钻石奖励和额外收入!
    3. 全库网所有的源码、教程等其它资源均源于用户上传发布,如有疑问,可直接联系发布作者处理
    4. 如有链接无法下载、失效或广告,请联系全库网管理员核实处理!
    5. 通过发布原创教学视频或优质源码资源可以免费获得全库网站内SVIP会员噢
    6.全库网管理猿邮箱地址:admin@qkuser.com,我们会在收到您的邮件后三个工作日内完成处理!
    7. 如遇到加密压缩包,默认解压密码为"qkuser.com",如遇到无法解压的请联系管理员!

    全库网 » RiPro网站主题自动修改用户默认头像为字母头像免插件手动纯代码修改