ECSHOP实现会员头像功能,评论显示会员头像功能。ECSHOP几年没更新了,功能上实在不尽人意,几乎绝大部分的商城网站都有了会员头像功能,但是ECSHOP却没有。得益于ECSHOP的开源,自然有大神二次开发实现了这个功能,一流资源网免费分享出来。

修改的步骤比较多,要耐心一点,一定记得先备份。

一流资源网已经在ECSHOP2.7.3版测试成功了。

先看图:

教程开始:

第一步:ecs_users 表加入 avatar 字段

后台 SQL查询里运行以下代码:

1
ALTER TABLE `ecs_users` ADD `avatar` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''

第二步:用户中心欢迎页显示头像

打开 themes\default\user_clips.dwt

查找:

1
2
<!-- *用户中心默认显示页面 start-->
<!-- {if $action eq 'default'} -->

在这两行代码后面合适位置加入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
<style>
.avtar .img a{display:none;width:72px;height:23px;background:url(images/change_avtar.gif);position:absolute;margin-left:44px;margin-top:93px}
.avtar .hover a{display:block}
.Left .img{border:1px solid #d0d0d0;margin-bottom:5px}
.Left .img,.Left .img img{width:120px;height:120px}
</style>
<div class="Left avtar" style="float:left;width:122px;text-align:center;">
    <div onmouseout="this.className='img'" onmouseover="this.className='img hover'" class="img">
        <a title="修改我的头像" href="user.php?act=profile" class="red"></a>
        <img src="{if $info.avatar}{$info.avatar}{else}images/avatar.gif{/if}">
    </div>
</div>

第三步:用户信息修改页面上传头像

打开 themes\default\user_transaction.dwt

查找:

1
2
<!-- 用户信息界面 start-->
<!--{if $action eq 'profile'}-->

在这两行代码后面找到:

1
<form name="formEdit" action="user.php" method="post" onSubmit="return userEdit()">

修改成:

1
2
<form name="formEdit" action="user.php" method="post" onSubmit="return userEdit()" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1097152" /><!-- 1M图片上传大小设置 -->

再找到 submit 提交之前加入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<tr>
    <td width="28%" align="right" bgcolor="#FFFFFF">会员头像:</td>
    <td width="72%" align="left" bgcolor="#FFFFFF">
    <div style="width:50%;float:left;">
        <input id="avatar" type="file" size="40" value="" name="avatar">
        <br/>
        <span style="color:#FF0000"> 图片像素最佳为55px * 55px,<br/>大小不得超过1M</span>
    </div>
    <div style="width:50%;float:left;">
        <img src="{if $profile.avatar}{$profile.avatar}{else}images/avatar.gif{/if}" alt="" width="55" height="55">
    </div>
    </td>
</tr><tr>
    <td width="28%" align="right" bgcolor="#FFFFFF">会员头像:</td>
    <td width="72%" align="left" bgcolor="#FFFFFF">
    <div style="width:50%;float:left;">
        <input id="avatar" type="file" size="40" value="" name="avatar">
        <br/>
        <span style="color:#FF0000"> 图片像素最佳为55px * 55px,<br/>大小不得超过1M</span>
    </div>
    <div style="width:50%;float:left;">
        <img src="{if $profile.avatar}{$profile.avatar}{else}images/avatar.gif{/if}" alt="" width="55" height="55">
    </div>
    </td>
</tr>

第四步:php 逻辑处理

打开根目录下 user.php 文件

查找:

1
require(dirname(__FILE__) . '/includes/init.php');

在下面新增一行加入以下代码:

1
2
3
include_once(ROOT_PATH . '/includes/cls_image.php');//会员头像 by neo
$image new cls_image($_CFG['bgcolor']);//会员头像 by neo
$allow_suffix array('gif''jpg''png''jpeg''bmp');//会员头像 by neo

继续查找:

1
/* 更新用户扩展字段的数据 */

在上面加入代码:

1
$avatar = isset($_POST['avatar']) ? $_POST['avatar'] : '';//会员头像 by neo

继续查找:

1
2
3
4
if (!empty($mobile_phone) && !preg_match('/^[\d-\s]+$/'$mobile_phone))
{
    show_message($_LANG['passport_js']['mobile_phone_invalid']);
}

在下面加入代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/* 检查图片:如果有错误,检查尺寸是否超过最大值;否则,检查文件类型 */
    if (isset($_FILES['avatar']['error'])) // php 4.2 版本才支持 error
    {
        // 最大上传文件大小
        $php_maxsize ini_get('upload_max_filesize');
        $htm_maxsize '1M';
       
        // 会员头像
        if ($_FILES['avatar']['error'] == 0)
        {
            if (!$image->check_img_type($_FILES['avatar']['type']))
            {
                show_message("图片格式不正确!");
            }
        }
        elseif ($_FILES['avatar']['error'] == 1)
        {
            show_message(sprintf('图片文件太大了(最大值:1M),无法上传。'$php_maxsize), $_LANG['profile_lnk'], 'user.php?act=profile''info');
        }
        elseif ($_FILES['avatar']['error'] == 2)
        {
            show_message(sprintf('图片文件太大了(最大值:1M),无法上传。'$htm_maxsize), $_LANG['profile_lnk'], 'user.php?act=profile''info');
        }
       
    }
    /* 4.1版本 */
    else
    {
        // 会员头像
        if ($_FILES['avatar']['tmp_name'] != 'none')
        {
            if (!$image->check_img_type($_FILES['avatar']['type']))
            {
                show_message("图片格式不正确!");
            }
        }
    }
           
    //会员头像 by neo
    if (!empty($_FILES['avatar']['name']))
    {
        /* 更新会员头像之前先删除旧的头像 */
        $sql "SELECT avatar " .
                " FROM " $GLOBALS['ecs']->table('users') .
                " WHERE user_id = '$user_id'";
       
        $row $GLOBALS['db']->getRow($sql);
       
        if ($row['avatar'] != '')
        {
            @unlink($row['avatar']);
        }
               
        $img_name $user_id '.' end(explode('.'$_FILES['avatar']['name']));
       
        $target = ROOT_PATH . DATA_DIR . '/avatar/';
               
        $original_img $image->upload_image($_FILES['avatar'], 'avatar'$img_name); // 原始图片
       
        $avatar $image->make_thumb($original_img, 55, 55, $target);
       
        if ($avatar === false)
        {
            show_message("图片保存出错!");
        }
    }

继续在下面找到:

1
2
3
4
5
6
7
$profile  array(
        'user_id'  => $user_id,
        'email'    => isset($_POST['email']) ? trim($_POST['email']) : '',
        'sex'      => isset($_POST['sex'])   ? intval($_POST['sex']) : 0,
        'birthday' => $birthday,
        'other'    => isset($other) ? $other array()
        );

修改成:

1
2
3
4
5
6
7
8
$profile  array(
        'user_id'  => $user_id,
        'email'    => isset($_POST['email']) ? trim($_POST['email']) : '',
        'sex'      => isset($_POST['sex'])   ? intval($_POST['sex']) : 0,
        'birthday' => $birthday,
        'avatar'   => $avatar,//会员头像 by neo
        'other'    => isset($other) ? $other array()
        );

第五步:

打开根目下 /includes/lib_clips.php

查找:

1
2
3
4
5
function get_user_default($user_id)
{
    $user_bonus = get_user_bonus();
       
    $sql "SELECT pay_points, user_money, credit_line, last_login, is_validated FROM " .$GLOBALS['ecs']->table('users'). " WHERE user_id = '$user_id'";

替换成:

1
2
3
4
5
function get_user_default($user_id)
{
    $user_bonus = get_user_bonus();
    //会员头像 by neo
    $sql "SELECT pay_points, user_money, credit_line, last_login, is_validated, avatar FROM " .$GLOBALS['ecs']->table('users'). " WHERE user_id = '$user_id'";

继续在后面找到:

1
$info array();

在下面一行加入:

1
$info['avatar'] = $row['avatar'];//会员头像 by neo

第六步:

打开 includes\lib_transaction.php 文件

找到:

1
if (!$GLOBALS['user']->edit_user($cfg))

在前面一行增加:

1
2
3
4
5
//会员头像
if (!empty($profile['avatar']))
{
    $cfg['avatar'] = $profile['avatar'];
}

继续查找:

1
2
3
4
5
6
7
8
9
10
function get_profile($user_id)
{
    global $user;
       
    /* 会员帐号信息 */
    $info  array();
    $infos array();
    $sql  "SELECT user_name, birthday, sex, question, answer, rank_points, pay_points,user_money, user_rank,".
             " msn, qq, office_phone, home_phone, mobile_phone, passwd_question, passwd_answer ".
           "FROM " .$GLOBALS['ecs']->table('users') . " WHERE user_id = '$user_id'";

修改为:

1
2
3
4
5
6
7
8
9
10
function get_profile($user_id)
{
    global $user;
       
    /* 会员帐号信息 */
    $info  array();
    $infos array();
    $sql  "SELECT user_name, birthday, sex, question, answer, rank_points, pay_points,user_money, user_rank,".
             " msn, qq, office_phone, home_phone, mobile_phone, passwd_question, passwd_answer, avatar ".//会员头像 by neo
           "FROM " .$GLOBALS['ecs']->table('users') . " WHERE user_id = '$user_id'";

继续查找:

1
$info['birthday']    = isset($infos['birthday']) ? $infos['birthday'] : '';

在下面加入:

1
$info['avatar']      = isset($infos['avatar']) ? $infos['avatar'] : '';//会员头像 by neo

第七步:

打开 includes\modules\integrates\integrate.php

查找:

1
var $error          = 0;

下面一行加入:

1
2
/* 会员头像 by neo */
var $field_avatar '';

继续查找:

1
2
3
4
if ((!empty($cfg['bday'])) && $this->field_bday != 'NULL')
{
    $values[] = $this->field_bday . "='" $cfg['bday'] . "'";
}

在下面一行加入:

1
2
3
4
5
//会员头像 by neo
if ((!empty($cfg['avatar'])) && $this->field_avatar != 'NULL')
{
    $values[] = $this->field_avatar . "='" $cfg['avatar'] . "'";
}

第八步:

打开 includes\modules\integrates\ecshop.php

查找:

1
$this->field_reg_date = 'reg_time';

下面一行加入:

1
$this->field_avatar = 'avatar';//会员头像 by neo

至此,前台显示及上传就OK了!

评论加入头像显示

打开 includes/lib_main.php 找到

1
function assign_comment($id$type$page = 1)

在该函数里面找到:

1
2
3
$sql 'SELECT * FROM ' $GLOBALS['ecs']->table('comment') .
        " WHERE id_value = '$id' AND comment_type = '$type' AND status = 1 AND parent_id = 0".
        ' ORDER BY comment_id DESC';

修改成:

1
2
3
$sql 'SELECT c.*,u.avatar FROM ' $GLOBALS['ecs']->table('comment') . ' as c left join ' $GLOBALS['ecs']->table('users') .
        " as u on c.user_id = u.user_id WHERE c.id_value = '$id' AND c.comment_type = '$type' AND c.status = 1 AND c.parent_id = 0".
        ' ORDER BY c.comment_id DESC';//会员头像 by neo

继续查找:

1
$arr[$row['comment_id']]['add_time'] = local_date($GLOBALS['_CFG']['time_format'], $row['add_time']);

在下面一行加入:

1
$arr[$row['comment_id']]['avatar']     = $row['avatar'];//会员头像 by neo

评论模板调用方法:

打开 themes/default/library/comments_list.lbi

查找:

1
<!-- {foreach from=$comments item=comment} -->

在foreach内容下面合适位置使用以下代码中用头像:

1
2
3
<p style="width:60px;height:60px;float:left;">
    <img style="position:absolute;left:0;top:3px;width:55px;height:55px;" src="<!-- {if $comment.avatar} -->{$comment.avatar}<!-- {else} -->images/avatar.gif<!-- {/if} -->">
</p>

有会员头像就显示,没有头像就调用默认的头像。

默认的头像目录为:/images/avatar.gif

将制作好的默认头像图片上传到这个目录即可,附件中也有提供!

最终效果:

后台修改部分,如果不需要后台修改修改会员头像可以不用修改。

第一步:

打开 admin\templates\user_info.htm

查找:

1
<form method="post" action="users.php" name="theForm" onsubmit="return validate()">

修改为:

1
2
<form method="post" action="users.php" name="theForm" onsubmit="return validate()" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1097152" /><!-- 1M图片上传大小设置 -->

继续查找:

1
2
3
4
<tr>
    <td class="label">{$lang.email}:</td>
    <td><input type="text" name="email" maxlength="60" size="40" value="{$user.email}" />{$lang.require_field}</td>
  </tr>

在后面一行加入:

1
2
3
4
5
6
7
8
9
10
11
12
13
<tr>
    <td width="28%" align="right" class="label">会员头像:</td>
    <td width="72%" align="left" bgcolor="#FFFFFF">
    <div style="width:50%;float:left;">
        <input id="avatar" type="file" size="40" value="" name="avatar">
        <br/>
        <span style="color:#FF0000"> 图片像素最佳为55px * 55px,<br/>大小不得超过1M</span>
    </div>
    <div style="width:50%;float:left;">
        <img src="../{if $user.avatar}{$user.avatar}{else}images/avatar.gif{/if}" alt="" width="55" height="55">
    </div>
    </td>
</tr>

第二步:

打开 admin\users.php

找到头部的

1
require(dirname(__FILE__) . '/includes/init.php');

在下面一行加入:

1
2
3
include_once(ROOT_PATH . '/includes/cls_image.php');//会员头像 by neo
$image new cls_image($_CFG['bgcolor']);//会员头像 by neo
$allow_suffix array('gif''jpg''png''jpeg''bmp');//会员头像 by neo

继续查找:

1
2
$sql = "SELECT u.user_id, u.sex, u.birthday, u.pay_points, u.rank_points, u.user_rank , u.user_money, u.frozen_money, u.credit_line, u.parent_id, u2.user_name as parent_username, u.qq, u.msn,
    u.office_phone, u.home_phone, u.mobile_phone".

修改为:

1
2
$sql = "SELECT u.user_id, u.sex, u.birthday, u.pay_points, u.rank_points, u.user_rank , u.user_money, u.frozen_money, u.credit_line, u.parent_id, u2.user_name as parent_username, u.qq, u.msn,
    u.office_phone, u.home_phone, u.mobile_phone, u.avatar".//会员头像 by neo

继续查找:

1
$user['mobile_phone']   = $row['mobile_phone'];

在后面一行加入:

1
$user['avatar']           = $row['avatar'];//会员头像 by neo

这样,后台编辑会员 就能看到会员的头像了。接下来,处理后台修改会员头像的提交逻辑处理

继续查找:

1
elseif ($_REQUEST['act'] == 'update')

找到下面的:

1
$credit_line empty($_POST['credit_line']) ? 0 : floatval($_POST['credit_line']);

在下面一行加入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
$user_id empty($_POST['id']) ? '' : trim($_POST['id']);//会员头像 by neo
       
    /* 检查图片:如果有错误,检查尺寸是否超过最大值;否则,检查文件类型 */
    if (isset($_FILES['avatar']['error'])) // php 4.2 版本才支持 error
    {
        // 最大上传文件大小
        $php_maxsize ini_get('upload_max_filesize');
        $htm_maxsize '1M';
       
        // 会员头像
        if ($_FILES['avatar']['error'] == 0)
        {
            if (!$image->check_img_type($_FILES['avatar']['type']))
            {
                sys_msg("图片格式不正确!", 1, array(), false);
            }
        }
        elseif ($_FILES['avatar']['error'] == 1)
        {
            sys_msg(sprintf('图片文件太大了(最大值:1M),无法上传。'$php_maxsize), 1, array(), false);
        }
        elseif ($_FILES['avatar']['error'] == 2)
        {
            sys_msg(sprintf('图片文件太大了(最大值:1M),无法上传。'$htm_maxsize), 1, array(), false);
        }
       
    }
    /* 4.1版本 */
    else
    {
        // 会员头像
        if ($_FILES['avatar']['tmp_name'] != 'none')
        {
            if (!$image->check_img_type($_FILES['avatar']['type']))
            {
                sys_msg("图片格式不正确!");
            }
        }
    }
           
    //会员头像 by neo
    if (!empty($_FILES['avatar']['name']))
    {
        /* 更新会员头像之前先删除旧的头像 */
        $sql "SELECT avatar " .
                " FROM " $GLOBALS['ecs']->table('users') .
                " WHERE user_id = '$user_id'";
       
        $row $GLOBALS['db']->getRow($sql);
       
        if ($row['avatar'] != '')
        {
            @unlink('../' $row['avatar']);
        }
               
        $img_name $user_id '.' end(explode('.'$_FILES['avatar']['name']));
       
        $target = ROOT_PATH . DATA_DIR . '/avatar/';
               
        $original_img $image->upload_image($_FILES['avatar'], 'avatar'$img_name); // 原始图片
       
        $avatar $image->make_thumb('../' $original_img, 55, 55, $target);
       
        if ($avatar === false)
        {
            sys_msg("图片保存出错!");
        }
    }

继续查找:

1
if (!$users->edit_user(array('username'=>$username'password'=>$password'email'=>$email'gender'=>$sex'bday'=>$birthday ), 1))

修改为:

1
if (!$users->edit_user(array('username'=>$username'password'=>$password'email'=>$email'gender'=>$sex'bday'=>$birthday'avatar'=>$avatar ), 1))//会员头像 by neo

OK,全部搞定!

【ECSHOP插件】ECSHOP会员头像,上传头像评论显示头像相关推荐

  1. 富头像上传编辑器(flash头像上传插件)

    富头像上传编辑器是一款支持本地上传.预览.视频拍照和网络加载的flash头像编辑上传插件,可缩放.裁剪.旋转.定位和调色等... 小巧的身材:文件大小仅仅只有 48 KB,而新浪的头像编辑器组件有 5 ...

  2. PHP Uploadify+jQuery.imgAreaSelect插件+AJAX 实现图片上传裁剪 仿微博头像上传功能

    http://blog.csdn.net/as66t/article/details/11688217 http://blog.mc-zone.me/article/226#comment-2991 ...

  3. yii2 头像上传 完整版

    最近要做一个完整功能的后台,其他包括数据备份以及头像上传.先写头像上传吧. 头像上传,yii2框架网上确实有很多,但是感觉都不是很完整.于是,下载了几个插件后,最终修改其中一个插件,作为完整版使用下来 ...

  4. vue3头像上传组件

    用到了自定义组件v-model的双向绑定 使用input的type=file这个原生html元素,通过监听change事件,获取到选择的文件(注意,选择完文件值后,要把这个隐藏的input的type= ...

  5. 头像裁剪上传插件php,yii2.0 上传头像插件(可裁剪)yii2-avatar扩展包

    1.yii2.0 上传头像插件包名 基于cropper的一款头像上传yii2组件 包名: composer require daimakuai/yii2-avatar 2.截图 3.yii2.0 上传 ...

  6. 个人中心html更换头像,html5 头像上传更换插件

    插件描述:html5 头像上传.更换.剪切插件 利用bootstrap样式排版已经点击功能,进行弹窗更换头像.modal的div中有form表单提交地址 以下方法由网友杜威提供 遇到的几个情况希望能帮 ...

  7. DISCUZ论坛插件h5手机电脑头像上传3.7.1带扩展插件【收集免费分享】

    一个支持电脑和手机h5技术头像上传的插件. 说明:本插件h5电脑版和h5手机版为自主全新开发的触屏版头像上传,体验好,性能好,绿色. 主要特点:支持H5电脑版和H5手机版头像上传. 支持鼠标和触屏操作 ...

  8. 一款好用的头像上传插件

    头像上传插件 头像是我们前端开发工作者一个必备的技能,而怎么既高效又美观的完成这项工作就是我们思考的问题,在这里我分享一个好看实用的插件给你们. ps:这里样式不是固定死的.你可以根据自身喜好调整样式 ...

  9. 小程序图片裁剪插件image-cropper实现个人头像上传裁剪功能

    小程序图片裁剪插件image-cropper实现个人头像上传裁剪功能 参考文档:小程序图片裁剪插件 image-cropper 整体效果流程图 一.第一步引入image-cropper,放在dist文 ...

  10. imgareaselect + php 裁剪和上传,jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能

    本文主要介绍了jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一,需要的朋友可以参考下,希望能帮助到大家. 上一节随笔中,我们已经知道了关于jQuery插件ImgAreaS ...

最新文章

  1. jenkins如何在一台机器上开启多个slave
  2. 6.0的版本的 tc,不支持大漠对象做数组吗?
  3. 哈夫曼编码c语言论文,哈夫曼编码的实现及应用论文.doc
  4. Python模块学习
  5. zabbix之监控mysql云服务
  6. linux下-bash: ls: command not found
  7. python 2.7中urllib 2 与python 3.5中 urllib的区别。
  8. c语言crc校验库函数,CRC校验原理及其C语言实现
  9. unity把两个相机渲染的场景显示在同个窗口
  10. 奇怪的 Win10 输入法问题
  11. 金蝶K3案例实验实际成本后台配置
  12. ZiPhone一键破解1.1.4nbsp;iPhone完整教程
  13. i.MX 6ULL 驱动开发 一:搭建开发环境
  14. scrcpy替换minicap
  15. LED光源的种类与LED光源与灯具的定义介绍
  16. C#多文本框进行组合查询的判空(最笨最傻的办法)
  17. ChatGPT入门案例|商务智能对话客服(一)
  18. 没有python基础直接学爬虫_只针对 Python 爬虫,该如何学习?
  19. 实验七 集成功率放大电路
  20. js逆向基础篇-某音乐网站-xx音乐

热门文章

  1. sql中获取当前时间
  2. python批量查询ip归属地_IP地址地理信息批量查询小工具
  3. Java权限管理系统
  4. 移植wireless extension
  5. Android Fragment应用实战,使用碎片向ActivityGroup说再见
  6. 基于Access的学生信息管理系统设计(上):表建立、表查询设计
  7. linux 五笔输入法下载软件,极点五笔Linux版|极点五笔输入法官方linux版_最火软件站...
  8. 计算机c盘坏了,电脑c盘损坏,怎样修复?
  9. linux wps 数学符号,2016版WPS数学符号如何输入
  10. 计算机网络原理 实验2《Windows Socket编程》