DiscuzNT 论坛 改源码显示昵称代替用户名
和单位内网整合后,发现论坛只能显示用户名,大家发言都是实名登录的,于是改源码显示昵称代替用户名。发现地方太多,不便逐一修改。后来研究发现网页都继承了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
浙公网安备 33010602011771号