1. 插件的构成
插件由前后台两部分构成,前台为“page/[插件文件夹]”,后台为“admin/[插件文件夹]”;
需要注意的是,一种类型的插件的前后台[插件文件夹]名称必须一致,并且以英文字母构成。
Admin和page目录下面的system目录为系统目录。
2. 插件的安装
登陆后台 -> 插件管理 -> 填写您的插件目录名称 -> 保存
这样就完成了插件安装过程
3. 插件目录结构约定
[目录结构]
[page] 前台系统目录
┗[插件1]
┗ [language] 语言包文件夹,详见7
┗ fun.asp 插件主要函数页面,详见8
┗ tag.inc 插件对应标签设置,详见9
┗ tag_Help.txt 标签帮助文档,不会被系统调用
┗ *.asp 功能页面,详见10
[admin] 后台管理目录
┗ [插件1]
┗ *.asp 功能页面,详见10
4. 创建数据库规则约定
A) 插件目录及数据库表一致性原则
如:ad广告插件,插件目录名称为ad,则数据库表为:kingad,若有附带的表,则为:kingad_column1, kingad_column2, kingad_column3。
5. 函数调用
<!--#include file="../system/plugin.asp"-->
这一plugin.asp文件包含了对page/conn.asp , page/config.asp , page/fun.asp 及所有的插件目录下面的fun.asp文件的引用,执行安装插件的过程则会重写这个plugin.asp文件并完成引用操作,无需单独调用。
6. 语言包的结构
<?xml version="1.0" encoding="UTF-8"?>
<kingcms>
<title>[插件名称]</title>
<common>[通用语言]</common>
<list>[列表页语言]</list>
<label>[表单页语言]</label>
<check>[表单验证提示]</check>
<flo>[flo对话框提示语言]</flo>
<aja>[aja对话框页面语言]</aja>
<alert>[弹出窗口提示语言]</alert>
</kingcms>
部分复杂的内容可以用<![CDATA[ … ]]>方式插入
7. 语言包的命名
page/system/inc/language.xml
<文件名 l="语言名称"/>
<zh l="繁體中文"/>
<zh-cn l="简体中文"/>
既要把语言包翻译成繁体,则需要先把插件目录下面的zh-cn.xml文件另存为zh.xml,然后进行翻译操作,当然简体->繁体是不需要翻译,直接转换即可。
8. fun.asp
A) 作用
i. 插件专用函数及Class调用
ii. 插件标签解析函数
B) 具体结构
class [类] '命名插件类
private sub class_initialize() '参数设置
r_path = "[插件目录]"
end sub
public function lang(l1) '语言包调用,直接拷贝进去即可用,需要指定r_path参数
on error resume next
if isobject(r_doc)=false then
set r_doc=Server.CreateObject("Microsoft.XMLDOM")
r_doc.async=false
if king.isexist(king_system&r_path&"/language/"&king.language&".xml") then
r_doc.load(server.mappath(king_system&r_path&"/language/"&king.language&".xml"))
else
r_doc.load(server.mappath(king_system&r_path&"/language/"&king_language&".xml"))
end if
end if
lang=r_doc.documentElement.SelectSingleNode("//kingcms/"&l1).text
if err.number<>0 then
lang="["&l1&"]"
err.clear
end if
end function
'install 插件数据表安装
private sub install()
king.head "admin",0'执行权限设置,安全起见,限管理员有权限进行安装
dim sql'定义变量
sql=" [表结构]"'定义数据库表结构
conn.execute "create table [数据库表] ("&sql&")"'创建表
end sub
end class'结束类
' *** *** *** *** *** *** *** ***
' 定义标签解析函数
function king_tag_[插件目录] (tag,invalue,tagname)
'注意:标签解析函数是全局函数,命名规则要严格遵守以上方式,以免发生冲突现象。
'tag:模板中写的完整的标签,如:{king:ad name="ggad" type="ssi"/}
'tagname:标签名称,也就是上述例子中的ad
'invalue:插入内容,如:title:[标题]|content:[内容]|keywords:[关键字]
[函数过程略]
end function
9. tag.inc
A) 作用:定义标签
B) 举例
case"[标签1]" str=king_tag_[插件目录](tag,invalue)
case"[标签2]" str=king_tag_[插件目录]_[扩展](tag,invalue,tagname)
C) 定义方法
case列表里指定标签名称,并把标签解析函数值返回给str,tag,invalue,tagname解释请见8
10. 功能页面 *.asp
A) 作用:管理数据、显示数据、操作数据
B) 结构
<!--#include file="../system/plugin.asp"-->
<%
dim pp
setking=new kingcms
king.checkplugin king.path'检查插件安装状态
set pp=new passport
select case action
case"" king_def
case"add" king_add
case"set" king_set
case elseking.error king.lang("error/invalid")
end select
set pp=nothing
set king=nothing
'def
sub king_def()
[代码略]
end sub
'add
sub king_add()
[代码略]
end sub
'set
sub king_set()
[代码略]
end sub
%>