LazyCMS 1.1 模块开发规则
此开发规则仅献给热衷于开源事业的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调用语言文字

