DiscuzNT 论坛 改源码显示昵称代替用户名

1. 显示昵称代替用户名 (来源与网络)

      和单位内网整合后,发现论坛只能显示用户名,大家发言都是实名登录的,于是改源码显示昵称代替用户名。发现地方太多,不便逐一修改。后来研究发现网页都继承了PageBase,通过继承取得用户名。后来修改pagebase如下:
        private int _userid;
        protected internal int userid
        {
            get { return _userid; }
            set
            {
                _userid=value;
                ShortUserInfo sui=Users.GetShortUserInfo(_userid);
                if (sui != null)
                    _username = sui.Nickname;
                else
                    _username = "";
            }
        }
        private string _username;

        protected internal string username
        {
            get { return _username; }
            set { }
        }
       实现了论坛显示昵称。但是用临时用户名的功能可能会不行。(具体这个功能我也没有用过)
      注意: 发帖后就可以看到效果

2. 版主的显示也显示昵称
    a. 数据库
         dnt_forumfields 表 : 增加字段 moderatorsNick  ntext(16) null
    b.其他前台
       1. 后台管理板块设置版主
            Discuz.Data.SqlServer ForumManage.cs
                  

public void InsertForumsModerators(string fid, string moderators, int displayorder, int inherited)
        {
            SqlConnection conn = new SqlConnection(DbHelper.ConnectionString);
            conn.Open();
            using (SqlTransaction trans = conn.BeginTransaction())
            {
                try
                {
                    int count = displayorder;


                    //数据库中存在的用户
                    string usernamelist = "";
                    //#nickname#//
                    string usernicklist = "";
                    //清除已有论坛的版主设置
                    foreach (string username in moderators.Split(','))
                    {
                        if (username.Trim() != "")
                        {
                            DbParameter[] parms =
        {
         DbHelper.MakeInParam("@username", (DbType)SqlDbType.VarChar, 20, username.Trim())
        };
                            //先取出当前节点的信息
                            DataTable dt = DbHelper.ExecuteDataset(trans, CommandType.Text, "SELECT TOP 1 [uid],[nickname] FROM [" + BaseConfigs.GetTablePrefix + "users] WHERE [groupid]<>7 AND [groupid]<>8 AND [username]=@username", parms).Tables[0];
                            if (dt.Rows.Count > 0)
                            {
                                DbHelper.ExecuteNonQuery(trans, CommandType.Text, "INSERT INTO [" + BaseConfigs.GetTablePrefix + "moderators] ([uid],[fid],[displayorder],[inherited]) VALUES(" + dt.Rows[0][0].ToString() + "," + fid + "," + count.ToString() + "," + inherited.ToString() + ")");
                                usernamelist = usernamelist + username.Trim() + ",";
                                usernicklist = usernicklist + dt.Rows[0]["nickname"].ToString().Trim()+",";
                                count++;
                            }
                        }
                    }

                    if (usernamelist != "")
                    {
                        DbParameter[] prams1 =
       {
        DbHelper.MakeInParam("@moderators", (DbType)SqlDbType.VarChar, 255, usernamelist.Substring(0, usernamelist.Length - 1)),
                                DbHelper.MakeInParam("@moderatorsNick", (DbType)SqlDbType.VarChar, 255, usernicklist.Substring(0, usernicklist.Length - 1))

       };
                        DbHelper.ExecuteNonQuery(trans, CommandType.Text, "UPDATE [" + BaseConfigs.GetTablePrefix + "forumfields] SET [moderators]=@moderators,[moderatorsnick]=@moderatorsNick WHERE [fid] =" + fid, prams1);
                    }
                    else
                    {
                        DbHelper.ExecuteNonQuery(trans, CommandType.Text, "UPDATE [" + BaseConfigs.GetTablePrefix + "forumfields] SET [moderators]='',[moderatorsnick]='' WHERE [fid] =" + fid);
                    }

                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw ex;
                }
            }
            conn.Close();
        }
       2. showforum
            
       3. forumindex
            forum.html
            <p class="msginfo"> 版主: 
               <em>
                     <%if {forum.moderatorsNick}!=""%>
                            {forum.moderatorsNick}
       4.Discuz.Forum.Forum  ForumInfo.cs
 
         

posted @ 2009-10-16 11:19  pj  阅读(414)  评论(0)    收藏  举报