约有个网站正在使用LazyCMS
最近更新more
许可协议more
免费!可以用在商业用途网站。包括个人及企业网站,而无需支付使用费用,仅需保留LazyCMS支持信息链接即可。详细协议请阅读许可协议文档。
当前位置 首页 >> 使用帮助 >> LazyCMS 1.1 模块开发规则

LazyCMS 1.1 模块开发规则

来源:本站原创     作者:Lukin    发布日期:2008-05-10     浏览次数:

此开发规则仅献给热衷于开源事业的LazyCMS程序员!


模块所有文件编码都为UTF-8
开发模式请先修改 core/LazyCMS.php 文件 的 CACHE_RUNTIME 常量值,防止缓存


1.模块的构成
      模块只有一个独立的文件夹,目录为“page/[模块文件夹]”,模块目录只能使用英文、数字、和下划线构成;system是系统目录,模块不能以system命名。

2.模块的安装
      登录后台->模块->点击安装,系统自动将在自定义菜单添加相关管理菜单,这样就完成了模块安装,以后准备扩展模块安装功能,用户可以直接浏览上传模块包,上传并解包安装。

3.模块目录结构规则
      [page]
         |- [模块目录]
           |- [language]                # 语言包文件夹,祥见 6
           |- [template]                # 后台模板目录,详见 8
           |- [help]                    # 帮助文件夹,此文件夹可选,文件支持UBB格式
             |- help.html               # 模块帮助文件,一般书写模块标签及使用方法
             |- about.html              # 关于模块的介绍
           |- common.php                # 模块公用文件,此文件可选
           |- config.php                # 模块配置文件,此文件可选
           |- control.php               # 模块控制层,祥见 9
           |- index.html                # 模块保护文件,此文件可选
           |- module.php                # 模块功能库和命名空间函数库,此文件可选,祥见 10

4.创建数据库规则
      a.) 数据表前缀使用 #@_ 作为 替代符
      b.) 所有数据表名称不能使用:system,admin,log,diymenu
      c). 模块目录及数据库表一致性原则
          一个模块里面有多个数据表前缀为模块名称,例:archives模块 分类表名称则命名为“archives_sort”

5.函数调用
     只要模块被安装,就可以直接调用函数库。使用静态方法调用各个已安装模块的函数。例:Onepage::create(1)

6.语言包的结构
    <'xml version="1.0" encoding="UTF-8"'>
    <lazycms>
        <title>[模块名称]</title>
        <version>[版本]</version>
        <author>[作者]</author>
        <email>[作者常用邮箱]</email>
        <source>[作者来自哪里?]</source>
        <manage>[模块的后台管理地址,请使用url函数]</manage>
        <common>[通用语言]</common>
        <list>[列表页语言]</list>
        <label>[表单页语言]</label>
        <check>[表单验证提示]</check>
        <pop>[poping对话框提示语言]</pop>
        <alert>[弹出窗口提示语言]</alert>
    </lazycms>
    部分复杂的内容可以用<![CDATA[ … ]]>方式插入,比如:html格式

7.语言包的命名
      page/system/inc/language.xml
      <文件名 l="语言名称"/>
      <zh l="繁體中文"/>
      <zh-cn l="简体中文"/>
      既要把语言包翻译成繁体,则需要先把模块目录下面的zh-cn.xml文件另存为zh.xml,然后进行翻译操作,当然简体->繁体 是不需要翻译,直接转换即可。

8.后台模板
    后台模板最好以.php为后缀名,模板支持php标签,支持LazyCMS里的任何函数
    后台模块模板 头部直接使用 <'php System::header();'>,尾部直接使用 <'php System::footer();'>

9.control.php
    A).作用:管理数据、显示数据、操作数据
    B).结构
        /**
         * 模块控制层
         *
         * Control 类名称必须 以Lazy开头,且继承 LazyCMS基础类
         * 动作方法必须用 _(一个下划线)开头,如果不以 _(一个下划线) 开头,此方法则是不可见的。
      * Control 类必须实现 function _index(){}方法
         * LazyCMS框架实现了子类的构造函数[_initialize()]和析构函数[_terminate()]模拟
      * 子类不可覆盖LazyCMS 父类的部分函数,具体请参看 core/system/lazycms.php 文件
         */
        class LazyArchives extends LazyCMS{
         // 必须实现此方法,默认操作方法
            function _index(){
                // 引用模板对象,$this设置之后,在模板里分配一个 $module 变量为 $this
                $tpl = getTpl($this);
                $tpl->display('index.php');
            }
     }

10.module.php
    A).作用
        1.模块专用模仿命名空间的函数类库
        2.模块标签解析函数
        3.为了函数名称不重复,请使用类的静态函数来作为函数的命名空间。
    B).具体结构
        class [模块目录名]{
            /**
             * 前台模板标签解析函数
             *
             * 此函数可选
             * 此函数当读取到相关模块标签时,自动调用此函数。
             * 此函数必须返回标签解析后的值
             */
            static function tags($tags,$inValue){
                return $I1;
            }
            /**
             * 安装此模块时执行此函数,进行数据库表创建
             *
             * 此函数可选,不操作数据库,此函数可以不写
             */
            static function instSQL(){
                return <<<SQL
                // 这里写操作数据的SQL
                // 支持 “//”和 “#” 注释
                // 具体写法请参看archives模块
        SQL;
            }
        }

11.特殊函数
    系统提供了4个特殊函数C(),M(),O(),L()
    C() 设置和读取网站配置
    M() 设置和读取模块配置
    O() 自动创建对象
    L() 根据xpath调用语言文字