DTcms的插件源码放在DTcms.Web/plugins目录下,发布后的插件位于站点根目录的plugins目录下,插件一般包含plugin.config、admin目录、bin目录和templet目录。另外其它目录和文件,如DAL、BLL文件夹分别代表DAL层的类文件和BLL层的类文件,这些都是由开发者自行发挥,没有严格的指定要求。
Plugin.config文件说明
该文件的存在,系统才会识别为这是一个插件,所以它里面的配置节点说明至关重要,下面我们来说明一下该文件的格式书写要求及列张表格说明该文件的结构节点,分别描述说明作用。
<?xml version="1.0" encoding="utf-8"?>
<plugin>
<directory>插件目录名</directory>
<name>插件中文标题</name>
<author>作者</author>
<version>版本号</version>
<description>插件描述</description>
<isload>安装状态0未安装1已安装</isload>
<install>
<sql><![CDATA[
SQL建表语句…
]]></sql>
……
</install>
<uninstall>
<sql> SQL删表语句…</sql>
……
</uninstall>
<urls>
<rewrite>URL配置</rewrite>
……
</urls>
<menu>
<nav>后台导航菜单</nav>
……
</menu>
</plugin>
各节点的说明:
节点名称 | 说明 | 示例 |
---|---|---|
directory | 插件的所在目录,位于DTcms.Web/plugins目录下的文件夹名称,要求名称为英文小写 | link |
name | 插件的中文名称,该名称将会显示在后台的插件安装配置管理页面。 | 友情链接 |
author | 开发者昵称 | 动力启航 |
version | 插件适应的系统版本号 | V3.0 |
description | 插件的备注说明 | 仅适用于3.0以上版本 |
isload | 插件的安装状态,0为未安装,1为已安装。如果插件尚未安装的状态下手动改为1则插件可能出错。 | 0 |
install | 插件的安装时所需要的SQL建表语句,该节点下还有sql子节点,一条sql子节点代表一条SQL语句。其中<![CDATA[……]]>代表XML所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当做字符数据看待。SQL语句表头的{databaseprefix}表示建表的前缀。 | <sql><![CDATA[……]]></sql> |
uninstall | 与install相反,该节点存放的是在卸载插件时所要执行的SQL语句删除的表,该节点下也有sql子节点,一条sql子节点代表一条SQL语句。 | <sql><![CDATA[……]]></sql> |
urls | 该节点为URL配置节点,其中一条子节点rewrite,代表一条URL配置信息,关于URL配置信息请查阅第三章文档。注意由于是插件,要求子节点rewrite的type属性值始终为plugin。 | |
menu | 后台生成的导航菜单节点,插件安装时会根据该节点下的nav子节点生成导航菜单,并分配权限控制。 | 请查阅menu的子节点nav属性说明 |
nav属性说明:
属性名称 | 说明 | 示例 |
---|---|---|
name | 导航的英文名称,不可重复,命名规则以plugin_开头,权限控制的名称,非常重要。 | plugin_link |
title | 插件的导航中文标题,该标题出现在生成的后台管理菜单上。 | 链接管理 |
url | 导航菜单的链接路径,位于该插件目录下的相对路径。一般指向admin目录的对应文件名。 | admin/index.aspx |
action | 导航菜单的权限控制器字典,该字典可在DTcms.Common项目的Utils.cs文件的ActionType方法中找到。以英文逗号分隔开。 |
枚举可选值有:
|
插件安装流程
插件在安装的时候所要做的工作:
- 系统自动复制所选插件bin目录下后缀名为dll文件到站点根目录下的bin目录下;
- 系统自动读取所选插件目录里的plugin.config文件中的install节点里的SQL语句进行建表;
- 系统自动读取所选插件目录里的plugin.config文件中的urls节点里的URL映射添加到站点根目录下的xmlconfig/url.config里;
- 系统自动读取所选插件目录里的templet目录下的模板文件生成aspx文件到站点的aspx/plugin目录下;
- 系统自动读取所选插件目录里的plugin.config文件中的menu节点里后台导航菜单添加到后台导航表里面,生成后台管理导航菜单;
- 系统自动修改所选插件目录里的plugin.config文件中的isload节点里的值为1;
插件卸载流程
插件在卸载的时候所要做的工作:
- 系统自动删除站点根目录下的bin目录里与所选插件bin目录下同名的dll文件;
- 系统自动读取所选插件目录里的plugin.config文件中的uninstall节点里的SQL语句进行删除表操作;
- 系统自动删除站点根目录下的xmlconfig目录里的url.config文件中与所选插件目录里的plugin.config文件中的urls节点里的URL配置;
- 系统自动删除站点根目录下的aspx/plugin目录里的对应的aspx文件;
- 系统自动删除所选插件对应的后台管理导航菜单的数据库记录;
- 系统自动修改所选插件目录里的plugin.config文件中的isload节点里的值为0;
插件运作原理
首先插件是一个独立的项目,当我们编写好各种CS类的时候,在编译后它会生成一个这个项目的DLL文件,该文件已经包含了我们在页面运作的封装类。
如上图所示,当我们通过URL地址通过HTTP请求一个页面的时候,系统会检查该URL是否属于插件URL,如果属于插件则将地址映射重写到站点的根目录下的aspx/plugin目录下对应的aspx文件,从而使页面能够运行起来。