这是我在2008年6月28日写的帖子,发在nt.discuz.net上的,现在转回来备份一下。原文地址:http://nt.discuz.net/showtopic-50906.html
说是做插件其实名不副实,其实是直接用DNT2.0的源代码进行改造,在用户信息部分添加一些需要的字段,技术含量不高,主要是介绍如何在别人系统中加入自己的东西,提供点思路。
源代码下载地址(792K)
交友插件主要功能是让会员填写更详细的个人信息和个性信息,并让其他人能够查看,通过这些信息,加深会员间的了解。一、需求:
1、允许注册1个字符长度的帐户
2、会员可以填写个人信息,可以修改自己的信息,可以查看别人的信息。
二、结果:
该插件通过修改源代码和模板,实现了与DNT2.0的无缝结合,外观表现和操作都非常自然。在用户中心添加了“编辑个人信息”页,允许用户自由修改资料;修改“查看用户信息”页,将会员资料展示在其中。三、修改前要准备和规划的:
a、得到DNT2.0源代码,并用vs2005打开解决方案sln。打开Discuz.Web项目中的\aspx\1目录,这里面是Discuz.ForumPage命名空间的逻辑层代码所在地,我们大部分页面逻辑要添加在里面。
b、打开\templates\default目录,这是原始模板的地址,页面表现需要对其中部分进行修改,并有新的模板文件要被创建。
c、规划一下,共要修改4个模板,新建1个模板;修改2个页面逻辑,新建1个页面逻辑;数据库要加1个表;采用单层来写这个表的对应DAL;使用XML实现数字字典来管理个人信息。
d、用管理后台将模板生成的页面会自动加上Inherits="Discuz.ForumPage.xxxxxx",就是说页面逻辑需要写在Discuz.Web项目中并进行编译才是最干净的做法,这样可以避免像“会员生日插件”那样需要在模板中添加命名空间的引用。
=============下面具体说明我是如何修改的===============
四、建立Discuz.Plugin.Friend插件项目,该项目主要功能是对Personinfo表进行增改查操作,对个人信息的勾选部分进行字典支持,是信息的底层。
1、建立数据库PersonInfo表,用于储存会员的个人信息,信息具体内容参考截图。
[id] [int] IDENTITY (1, 1) NOT NULL ,
[uid] [int] NULL ,
[Lookfor] [int] NULL ,
[Title] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Intro] [nvarchar] (300) COLLATE Chinese_PRC_CI_AS NULL ,
[Height] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Stature] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Marriagestate] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Industry] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Job] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Constellation] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Blood] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[EduLevel] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[School] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Earning] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Personality] [nvarchar] (1400) COLLATE Chinese_PRC_CI_AS NULL ,
[Describing] [nvarchar] (1400) COLLATE Chinese_PRC_CI_AS NULL ,
[Predominance] [nvarchar] (1400) COLLATE Chinese_PRC_CI_AS NULL ,
[Fond] [nvarchar] (1400) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO