Discuz教程网

discuz7.2 昵称替换用户名

[复制链接]
authicon dly 发表于 2012-8-1 18:29:18 | 显示全部楼层 |阅读模式
A、打开include/common.inc.php
1、找到:$membertablefields = 'm.uid
在上面加:$otherfields = ',mf.nickname';

2、找到:$query = $db->query("SELECT s.sid, s.styleid, s.groupid='6' AS ipbanned, s.pageviews AS spageviews, s.lastolupdate,婚纱照姿势, s.seccode, $membertablefields

                        FROM {$tablepre}sessi** s, {$tablepre}members m

                        WHERE m.uid=s.uid AND s.sid='$sid' AND CONCAT_WS('.',s.ip1,张杰与谢娜的婚纱照,s.ip2,s.ip3,s.ip4)='$onlineip' AND m.uid='$discuz_uid'

                        AND m.password='$discuz_pw' AND m.secques='$discuz_secques'");

替换成:$query = $db->query("SELECT s.sid,维纳斯婚纱照价格, s.styleid, s.groupid='6' AS ipbanned,长沙拍艺术照, s.pageviews AS spageviews, s.lastolupdate, s.seccode, $membertablefields $otherfields

                        FROM {$tablepre}sessi** s, {$tablepre}members m,{$tablepre}memberfields mf

                        WHERE m.uid=s.uid AND s.sid='$sid' AND CONCAT_WS('.',s.ip1,婚纱照那家好,s.ip2,s.ip3,s.ip4)='$onlineip' AND m.uid='$discuz_uid' AND m.uid=mf.uid

                        AND m.password='$discuz_pw' AND m.secques='$discuz_secques'");
说明:其实就是连接{$tablepre}memberfields表显示nickname

下边的修改就是使得头部和底部里可以显示昵称或者用户名。优先昵称显示
但是这样做是否会引起其他问题,未作验证。

找到:$discuz_userss = $discuz_user;
        $discuz_user = addslashes($discuz_user);
替换成:if(!empty($nickname)){

                $discuz_userss = $nickname;

                $discuz_user = addslashes($nickname);        

                }else{

                $discuz_userss = $discuz_user;

                $discuz_user = addslashes($discuz_user);

                }

B、根目录 forumdisplay.php 文件
修改forumdisplay.php

if(($start_limit && $start_limit > $stickycount) || !$stickycount || $filterbool) {

        $querysticky = '';
        $query = $db->query("SELECT t.* , mf.nickname FROM {$tablepre}threads t
            LEFT JOIN {$tablepre}memberfields mf ON(mf.uid = t.authorid)
                WHERE t.fid='$fid' $filteradd AND $displayorderadd
                ORDER BY t.displayorder DESC, t.$orderby $ascdesc
                LIMIT ".($filterbool ? $start_limit : $start_limit - $stickycount).", $tpp");

} else {

        $querysticky = $db->query("SELECT t.* , mf.nickname FROM {$tablepre}threads t
            LEFT JOIN {$tablepre}memberfields mf ON(mf.uid = t.authorid)
                WHERE t.tid IN ($stickytids) AND t.displayorder IN (2, 3)
                ORDER BY displayorder DESC, $orderby $ascdesc
                LIMIT $start_limit, ".($stickycount - $start_limit < $tpp ? $stickycount - $start_limit : $tpp));

        if($tpp - $stickycount + $start_limit > 0) {
                $query = $db->query("SELECT t.* , mf.nickname FROM {$tablepre}threads t
                    LEFT JOIN {$tablepre}memberfields mf ON(mf.uid = t.authorid)
                        WHERE t.fid='$fid' $filteradd AND $displayorderadd
                        ORDER BY displayorder DESC, $orderby $ascdesc
                        LIMIT ".($tpp - $stickycount + $start_limit));
        } else {
                $query = '';
        }

}


改的目的是让 $thread['nickname'] 提取到昵称值,在需要用昵称值的地方可以调用.


1、        templates/default里viewthread_node.htm 文件
查找
<a href="space.php?uid=$post[authorid]" class="posterlink" target="_blank">$post[author]</a>
把$post[author]替换为
<!--{if empty($post[nickname])}-->$post[author]<!--{else}-->$post[nickname]<!--{/if}-->
效果是这里变昵称(没有昵称则显示用户名)

2、templates/default里viewthread_node.htm 文件
查找
<a href="space.php?uid=$post[authorid]" target="_blank">$post[author]</a>
替换
<a href="space.php?uid=$post[authorid]" target="_blank"><!--{eval echo cutstr($post[author],4,'***');}--></a>
效果是隐藏玩家账号
由于原来也有昵称显示所以可去掉其中一个。


3、templates/default里viewthread_node.htm 文件
...改完效果是--左边头像下显示昵称;也可以改到头像上显示昵称。代码放的位置改改就好。
!!!无昵称则不显示。
查找
<p><em><a href="faq.php?action=grouppermission&searchgroupid={$post[groupid]}" target="_blank">{$post[authortitle]}</a></em></p>

在上边加
<!--昵称显示-->
<!--{if $post['nickname']}--><p>{lang nickname}: <a href="space.php?uid=$post[authorid]" target="_blank"><em>$post[nickname]</em></a></p><!--{/if}-->

4、

templates/default里forumdisplay.htm文件
找:
<a href="space.php?uid=$thread[authorid]">$thread[author]</a>
$thread[author]换成:
<!--{if empty($thread[nickname])}--> $thread[author]<!--{else}-->$thread[nickname]<!--{/if}-->

效果是帖子列表 作者 换成昵称显示

5. 隐藏用户账号显示,修改模板文件./template/default/viewpro_classic.htm
查找
<h1>$member[username]<!--{if $member[online]}--> <img src="{IMGDIR}/online_buddy.gif" title="{lang online}" class="online_buddy" /><!--{/if}--></h1>
把$member[username]
替换成
<!--{eval echo cutstr($member[username],4,'***');}-->



还有这里


根 forumdisplay.php文件
查找
$thread['lastposterenc'] = rawurlencode($thread['lastposter']);
在下边加
$mysql="select nickname from ({$tablepre}members m inner join {$tablepre}memberfields mf on m.uid=mf.uid) inner join {$tablepre}threads t
on m.username=t.lastposter
where t.lastposter='$thread[lastposter]'";
$res=$sdb->query($mysql);
while($my=$sdb->fetch_array($res)){
$thread['lastposter_nickname']=$my['nickname'];
}

模板调用为:$thread['lastposter_nickname']

templates/default里forumdisplay.htm文件
查找<PRE>$thread[lastposter]</a><!--{else}-->{lang anonymous}<!--{/if}--></cite></PRE>
改为以下(去掉了<PRE>否则对样式有影响)
<!--{if empty($thread[lastposter_nickname])}-->$thread[lastposter]
<!--{else}-->$thread[lastposter_nickname]<!--{/if}-->
</a><!--{else}-->{lang anonymous}<,婚纱摄影加盟!--{/if}--></cite>

目的是屏蔽超链接。因为这里换了昵称会传递错误。

在Include/forum.func.php
查找
$lastpost['author'] = '<a href="space.php?username='.rawurlencode($lastpost['author']).'">
'.$lastpost['author'].'</a>';

替换为
$lastpost['author'] = '<lable>'.$lastpost['author'].'</lable>';
这是主页里的。
目的是屏蔽超链接。因为这里换了昵称会传递错误。




上一篇:Discuz后台审帖每页显示数量修改
下一篇:Discuz的Memcache缓存实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2024-11-1 07:56

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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