由于工作关系只能暂时放弃对mongodb的研究了 开始研究PHPcms
目前为止我已经基本完成了模块的开发趁着周末来这里做个总结我发现phpcms写的还不错不过文档什么的确实不多
不说废话了对于phpcms的模块开发首先要了解模块的目录结构
我们可以在
找到他的目录结构 我们要开发的东东(也就是模块)就在/phpcms/modules/下面
如果没有什么特别的 在开发一个模块之前先要按照目录结构建立好相关目录并且设计好数据库表结构 比方说 我们建立一个模块叫做我的模块 my_test
下面应该是mytest下的目录结构
mytest
class //这个是mytest模块会用到的类
function//mytest模块用到的函数
install//安装此模块需要的一些配置文件和建立数据表myslq语句什么的在这里
language//多语言的时候会用到
configiniphp//这个配置文件是用来描述整个模块的一些信息
extentionincphp//这个是创建目录结构 这个文件也用来控制权限
modelphp//模块使用了哪些数据模型(可以理解为使用了哪些表)
modelsql//这个向数据库里面插入模型的记录
my_testsql//这个文件在安装的时候会被执行把建立数据库表的sql放进来
templates //mytest模块用到的模板文件
uninstall //卸载模块时候用到的配置和文件
这个里面的文件我没研究 回头研究了补上
my_testphp //这个是mytest模块的后台控制器文件`
indexphp//这个是前台的控制器这个我没写东西
建立完一个这样的结构后 我们还需要在/phpcms/model/下面建立我们的数据模型
例如 my_test_modelclassphp (这个使用了很典型的工厂模式)
具体每个文件里面写了些什么我们一个一个来看 首先来看我们在model文件夹下面写的那个文件
代码如下:
<?php
defined(
IN_PHPCMS
) or exit(
No permission resources
);
pc_base::load_sys_class(
model
);
class my_test_model extends model {
public function __construct() {
$this
>db_config = pc_base::load_config(
database
);
$this
>db_setting =
default
;//默认的数据库配置
//多个库的话可以在这里选库
$this
>table_name =
my_test
;//这个就是表名称
不用加表前缀
parent::__construct();
}
}
?>
第一行的作用是确定是不是在phpcms的运行框架内
第二行加载系统的model类后面的参数 的意思是并不实例化
最后一行调用了父类的构造方法可以在phpcms/libs/classes/modelclassphp中找到
而这个model类里面定义了很多对数据的操作方法 最基本的增删改查以后我再详细说说model基本的一些方法
接着来看看modules 里面的东东
我们一个个往下面看 第一个language 是用来支持多语言菜单的
然后是configiniphp这个里面写的是一些关于模块安装时候的信息
文件里面是这个结构的
代码如下:
$module =
mytest
;//使用的model
$modulename =
这里是模块的名称
;
$introduce =
模块的描述信息
;
$author =
作者
;
$authorsite =
作者网站
;
$authoremail =
作者email
;
里面标注的很清楚了
接着是extentionincphp 这个文件是用来创建后台管理菜单的目录结构的也是用来控制权限的
代码如下:
$id= $menu_db
>insert(array(
name
=>
这里写着操作名称
parentid
=>父ID
m
=>
模块
c
=>
控制器
a
=>
动作
data
=>
listorder
=>排序
display
=>
是否显示
)
true);//最后的true是用来返回ID的
文件最后应该有一个数组这个数组是用来插入系统的languagezhcnsystem_menulangphp里面的 格式如下
复制代码 代码如下:
$language = array(
这里是你起的操作名称
=>
这里是操作的中文翻译
类似:
mytest_init
=>
显示列表
);
然后是modelphp 这个就是你使用了哪些数据模型 可以理解为使用了哪些表
复制代码 代码如下:
return array(
mytest
my_test_artcle
);
然后是modelsql 这个是用来向系统的模型表里面插入数据用的
复制代码 代码如下:
INSERT INTO `phpcms_module` (`module`
`name`
`url`
`iscore`
`version`
`description`
`setting`
`listorder`
`disabled`
`installdate`
`updatedate`) VALUES ();
然后是mytestsql 建立你数据库表的语句应该写在这个文件里面
接着就是你所使用的模板 应该放在templates里面 命名的规则应该是 mytest_addtplphp
最后是你的控制器 这个有的研究了控制器里面是针对你每个url传递过来的action也就是a=?的动作默认动作是init
代码如下:
<?php
defined(
IN_PHPCMS
) or exit(
No permission resources
);
pc_base::load_app_class(
admin
admin
);
class mytest extends admin(){
public function __construct(){
parent::__construct;//调用父类的构造函数
}
public function init(){
echo "这里是默认的操作方法";
}
public function add(){
include $this
>admin_tpl(
mytest_add
);//使用模板的方法
}
}
控制器里面写好了 我们把上面的文件都写完了就可以安装我们的模块了