zoukankan      html  css  js  c++  java
  • KingCMS 插件开发原则

    1.         插件的构成

     

    插件由前后台两部分构成,前台为“page/[插件文件夹]”,后台为“admin/[插件文件夹];

    需要注意的是,一种类型的插件的前后台[插件文件夹]名称必须一致,并且以英文字母构成。

    Adminpage目录下面的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列表里指定标签名称,并把标签解析函数值返回给strtag,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

     

    %>

  • 相关阅读:
    CSS盒子模型
    getContextPath、getServletPath、getRequestURI、request.getRealPath的区别
    MYSQL中的CASE WHEN END AS
    单点登录的精华总结
    git&github
    June 21st 2017 Week 25th Wednesday
    June 20th 2017 Week 25th Tuesday
    June 19th 2017 Week 25th Monday
    June 18th 2017 Week 25th Sunday
    June 17th 2017 Week 24th Saturday
  • 原文地址:https://www.cnblogs.com/yk25com/p/2304291.html
Copyright © 2011-2022 走看看