第一次做插件,高手莫笑话了
点击下载:
附件: 友情链接申请插件(For Discuz!NT 2.0).rar (2008-1-16 8:45:04, 33.02 K)
该附件被下载次数 230
演示见
http://summer.52dnt.cn/board/forumindex.aspx此插件功能为提供论坛友情链接的自助申请。
目前支持论坛版本为 Discuz!NT 2.0 (.Net Framework 2.0 三种默认数据库)。
采用模板方式编写,默认自适应Default模板(模板文件为/templates/default/reglink.htm,修改后请重新生成)。
安装完成后,请修改相应的模板添加链接。推荐为_header.htm模板。链接{forumurl}reglink.aspx即可。(请在修改模板后重新生成模板缓存)
如果有什么问题请反馈。
安装方法:
1、文件清单:
admin\plugin\目录:index.aspx,RegLinkManage.aspx(后台管理页面)
aspx\1目录: RegLink.aspx(前台页面,此页面为模板生成文件,如果需要修改,可以通过修改模板后重新生成得到)
bin目录: Discuz.PlugIn.RegLink.dll,Discuz.PlugIn.RegLink.Data.dll(插件程序的主DLL,提供功能)
Discuz.PlugIn.RegLink.Data.SqlServer.dll,Discuz.PlugIn.RegLink.Data.MySql.dll,Discuz.PlugIn.RegLink.Data.dll(3个数据库的支持文件,选择上传即可。如果怕麻烦,全部上传上去也可以。)
config目录: reglink.config(插件的配置文件)
PlugIn\Install目录: index.aspx,SqlServer.sql,MySql.sql,Access.sql(安装文件和数据库脚本)
templates\default目录:reglink.htm(前台的模板文件,如果需要修改前台显示样式,可以修改这个文件后重新生成模板缓存。附:默认自适应default模板)
2、上传bin目录到你的网站根目录;
3、将其他目录和文件上传到论坛目录;
4、在浏览器里输入:你的网址+/plugin/install/index.aspx进行安装。(安装完毕后最好删除此目录)如下图所示:


5、安装完毕后就可以登入后台,可以看见顶部的模块导航中增加了“插件”模块。如下图所示:


管理页面如图:


6、进入“全局=>界面风格=>模板管理=>管理“默认模板””添加前台的导航菜单。我的修改如下:
编辑_header.htm模板,找到码段,替换为下面的即可
<li><a href="{forumurl}showtemplate.aspx">界面</a></li>
<li><a href="{forumurl}archiver/index.aspx">简洁版本</a></li>
<li><a href="{forumurl}reglink.aspx" style="color:red">申请友情链接</a></li>
<li class="noground"><a href="{forumurl}onlineuser.aspx">在线</a></li>
7、重新生成模板缓存。前台就OK了。如下图所示:




8、安装完毕了。
演示见
http://summer.52dnt.cn/board/forumindex.aspx关于制作此插件,我得到的经验是:
1、Discuz.Web.UI项目中的BasePage有很多不错的东西,可以借鉴或者直接继承过来。
2、Discuz!NT的模板语法其实还是比较简单的,主要就是一些页面的内部变量不要写错,<%if%><%/if%>需要闭合正确。
3、如果想了解多数据库支持的实现,推荐大家不要放过Discuz.Data项目,然后就是那3个数据库支持项目。PS.自己添加数据库支持需要实现IDataProvider和IDbProvider即可。
4、xml序列化和反序列化很好用,官方提供了一个工具类Discuz.Common.SerializationHelper,有save()和load()两个方法来读取xml格式的配置文件很方便。下面是我的代码段:
RegLinkConfigInfo rlci = new RegLinkConfigInfo();
rlci.Description = TB_Description.Text;
rlci.SuccessMessage = TB_SuccessMsg.Text;
rlci.LoginRequest = Convert.ToInt32(CB_IsLoginRequest.Checked);
SerializationHelper.Save(rlci, Utils.GetMapPath(BaseConfigs.GetForumPath + "config/reglink.config"));
RegLinkConfigInfo是自己创建的类:
/// <summary>
/// 基本设置描述类, 加[Serializable]标记为可序列化
/// </summary>
//记得要加Serializable表示可序列化哈~
[Serializable]
public class RegLinkConfigInfo
{
#region 私有字段
private string m_Description;
private int m_LoginRequest;
private string m_SuccessMessage;
#endregion
#region 属性
public string Description
{
get { return m_Description; }
set { m_Description = value; }
}
public int LoginRequest
{
get { return m_LoginRequest; }
set { m_LoginRequest = value; }
}
public string SuccessMessage
{
get { return m_SuccessMessage; }
set { m_SuccessMessage = value; }
}
#endregion
}
5、暂时没有什么了,有问题大家一起交流哈~
附上项目文件,有兴趣的朋友下吧。PS 代码我没有整理过,凑合一下吧

附件: Discuz.PlugIn.RegLink.part01.rar (2008-1-15 17:27:06, 1024 K)
该附件被下载次数 150
附件: Discuz.PlugIn.RegLink.part02.rar (2008-1-15 17:27:06, 1024 K)
该附件被下载次数 149
附件: Discuz.PlugIn.RegLink.part03.rar (2008-1-15 17:27:06, 1024 K)
该附件被下载次数 148
附件: Discuz.PlugIn.RegLink.part04.rar (2008-1-15 17:27:06, 119.08 K)
该附件被下载次数 134
源码更新,有兴趣的朋友可以自己编译一下.(模板顶部的命名空间请对照上面的版本修改一下,不然Discuz!NT原版的模板引擎生成会出错.)
2008-9-28