discuz默认显示用户昵称已有 380 次阅读 2010-4-21 13:14 |个人分类:程序设计|关键词:discuz 昵称 用户

  首先,打开 include/global.func.php ,在里面添加下面的一个函数:

  123456789

  function getnickname($uid){ global $db, $tablepre; $nickname = ''; $query = $db->query("SELECT nickname from {$tablepre}memberfields where uid= '{$uid}' LIMIT 1"); if($memnick = $db->fetch_array($query)) $nickname = $memnick['nickname']; return $nickname; }

  然后打开 include/newreply.inc.php ,找到

  1

  $author = empty($isanonymous) ? $discuz_user : '';

  替换成:

  12345678

  if($nickname = getnickname($discuz_uid)) { $author = empty($isanonymous) ? $nickname : ''; } else { $author = empty($isanonymous) ? $discuz_user : ''; }

  然后查找文件中的文本:

  1

  '$discuz_user' // 注意两边的单引号,这样是为了找到sql语句中引用到的 $discuz_user变量

  替换成:

  1

  '$author'

  接下来打开 include/newthread.inc.php ,找到:

  1

  $author = !$isanonymous ? $discuz_user : '';

  替换成:

  12345678

  if($nickname = getnickname($discuz_uid)) { $author = !$isanonymous ? $nickname : ''; } else { $author = !$isanonymous ? $discuz_user : ''; }

  然后查找文件中的文本:

  1

  '$discuz_user' // 注意两边的单引号,这样是为了找到sql语句中引用到的 $discuz_user变量

  替换成:

  1

  '$author'

  这样咱们的工作就告一段落了,不过这只能保证改动代码之后用户发的帖子和恢复都会优先显示自定义的昵称,没有昵称才会显示用户名。之前的信息怎么办呢?我看了一下,最需要处理的应该就是帖子列表中的“作者”一栏,其它的比如“最近回复”都会逐渐被后面的新发布的信息顶下去,所以不用关心。这样的话一条 SQL 语句就可以了,假设你的 discuz 安装的时候使用的数据库表的前缀是 “cdb_”, SQL 语句就可以这样写:

  1

  UPDATE cdb_threads AS A, cdb_memberfields AS B SET A.author=B.nickname WHERE A.authorid=B.uid AND