七、在Discuz.Web项目中新建userpersoninfo.aspx页面,编写对应逻辑,完成会员修改自己个人信息的功能,以满足需求[2]的前2点。
1、在\aspx\1中建立userpersoninfo.aspx页,会产生对应的.cs文件。

2、在userpersoninfo.aspx.cs文件中添加呈现逻辑,具体代码看附件。注意这时候没必要在userpersoninfo.aspx页中写什么,因为那是会被模板生成后替换掉的东西。

CODE:

        /// 当前用户信息
        
/// </summary>
        public UserInfo user = new UserInfo();

        
public PersonInfo person;
        
public DataTable personality;
        
public DataTable describing;
        
public DataTable predominance;
        
public DataTable fond;

        
protected override void ShowPage()
        {
            pagetitle 
= "用户控制面板";

            
if (userid == -1)
            {
                AddErrLine(
"你尚未登录");

                
return;
            }
            user 
= Users.GetUserInfo(userid);

            person 
= PersonInfo.GetModel(userid);
            personality 
= PersonInfo.GetEnum

(PersonInfo.PersonInfoType.Personality);
            describing 
= PersonInfo.GetEnum

(PersonInfo.PersonInfoType.Describing);
            predominance 
= PersonInfo.GetEnum

(PersonInfo.PersonInfoType.Predominance);
            fond 
= PersonInfo.GetEnum(PersonInfo.PersonInfoType.Fond);
        }



3、在\templates\default中复制一个usercpprofile.htm,改名为userpersoninfo.htm,在其基础上修改为我们需要的表现,如“编辑个人信息”图中所示。注意把呈现逻辑也一并写在.htm中,具体规则参考“DISCUZ!NT 2.0 模板说明文档.CHM”。
下面段代码是用于呈现大量的勾选框,是这张模板页制作的难点。

CODE:
 


性:</label>
                                
<div style="width:100%">
                                
<%loop personalityitem 

personality
%>
                                
<div style="width:150px; 

float:left;"
><input name="personality" type="checkbox" value="{personalityitem

[PersonalityItem_Text]}"

                                <%csharp%
>
                                if 

(("{person.personality}").IndexOf("{personalityitem[PersonalityItem_Text]}") != 

-1)
                                {
                                templateBuilder.Append(" 

checked='checked'");
                                }
                                
<%/csharp%>
                                />{personalityitem

[PersonalityItem_Text]}
</div>
                                
<%/loop%>
                        
</div>
                                
<br />


4、在userpersoninfo.aspx.cs文件中添加更新personinfo的逻辑,具体代码看附件。
CODE:
 
 (DNTRequest.IsPost())
                {
                    if (ForumUtils.IsCrossSitePost())
                    {
                        AddErrLine(
"您的请求来路不正确,无法提交。如果您安装了某种默认屏蔽来路信息的个人防火墙软件(如 Norton Internet Security),请设置其不要禁止来路信息后再试。");
                        
return;
                    }

                    
if (page_err == 0)
                    {
                        person.Lookfor 
= DNTRequest.GetInt("lookfor"0);
                        person.Title 
= DNTRequest.GetString("title");
                        person.Intro 
= DNTRequest.GetString("intro");
                        person.Height 
= DNTRequest.GetString("height");
                        person.Stature 
= DNTRequest.GetString("stature");
                        person.Marriagestate 
= DNTRequest.GetString("marriagestate");
                        person.Industry 
= DNTRequest.GetString("industry");
                        person.Job 
= DNTRequest.GetString("job");
                        person.Constellation 
= DNTRequest.GetString("constellation");
                        person.Blood 
= DNTRequest.GetString("blood");
                        person.EduLevel 
= DNTRequest.GetString("eduLevel");
                        person.School 
= DNTRequest.GetString("school");
                        person.Earning 
= DNTRequest.GetString("earning");
                        person.Personality 
= DNTRequest.GetString("personality");
                        person.Describing 
= DNTRequest.GetString("describing");
                        person.Predominance 
= DNTRequest.GetString("predominance");
                        person.Fond 
= DNTRequest.GetString("fond");
                        PersonInfo.UpdateModel(person);

                        SetUrl(
"userpersoninfo.aspx");
                        SetMetaRefresh();
                        SetShowBackLink(
true);
                        AddMsgLine(
"修改个人信息完毕");
                    }
                }


5、编译Discuz.Web项目,在后台生成userpersoninfo.htm模板,此时“编辑个人信息”页面基本完成,可以实现功能满足要求了。

DNT2.0交友信息插件制作全攻略(二)
 
八、以上功能基本都完成了,但在“编辑个人信息”页面并不能进去,因为没有对应的菜单。下面修改菜单模板,增加菜单和对应的一些逻辑。
1、修改_permenu.htm,增加“编辑个人信息”链接。

2、修改_menu.htm,增加“编辑个人信息”链接。

3、菜单想怎么摆就怎么摆吧,这块就比较简单了。生成模板,这时整个交友插件就修改制作完成了。

九、总结
1、这种修改方式有个弊端,就是必须要源代码,而且要修改模板,难度较大。

2、好处是和源文件结合的很紧密,前台表现非常好,与论坛天衣无缝的整合在一起,没什么破绽,是符合官方的开发思路的。

3、部分模板被修改了,如果要换皮肤,需要每次将修改的5张模板进行覆盖。

4、有新的2个DLL要替换:Discuz.Web.dll、Discuz.Plugin.Friend.dll。

5、用这种方式可以对DNT2.0的会员信息进行大幅度的扩展,对于网站整合来说,可以以DNT2.0的会员为核心,在其上添加更多的业务功能,或者与网站的业务流程进行交叉,灵活性非常大。我想能使用这种方式对DNT2.0进行修改的人,用DNT2.0进行网站整合和重组都不是什么问题。

(全文完)

相关文章:

  • 2022-02-07
  • 2021-10-24
  • 2021-09-19
  • 2021-12-09
猜你喜欢
  • 2021-07-07
  • 2021-12-10
  • 2021-11-18
  • 2021-08-23
  • 2021-12-09
相关资源
相似解决方案