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

     

    %>

  • 相关阅读:
    jQuery
    jquery获得内容
    获得链接中 href 属性的值
    遍历及过滤 first(), last() 和 eq() filter() 和 not()
    siblings() next() nextAll() nextUntil() prev() prevAll() prevUntil() 在 DOM 树中水平遍历
    后代children() find()的区别
    parent() parents() parentsUntil()三者之间的对比
    拿到类名为two_data的里面自定义属性为data的值为14的话,就给这行代码在添加一个class等于active的类
    动态给某一个元素添加active
    Jquery中拿到相同的对应的所有的标签
  • 原文地址:https://www.cnblogs.com/yk25com/p/2304291.html
Copyright © 2011-2022 走看看