phpcms v9新模块的安装及卸载
1、进入phpcms V9 后台管理的“模块管理”页面(此处我跳过了phpcms 项目的安装过程,有兴趣的同学可以参考本人的另一篇经验:http://jingyan.baidu.com/article/9989c746da8402f648ecfed2.html),

2、尝试卸载然后再安装默认的模块,从而了解后续新增模块的操作流程。通过实际操作我们发现一个好处是,增加了灵活性,达到了模块化的要求,以下我们尝试新建一个模块并达到可安装,可卸载的功能。




3、新建模块目录,此处将模块的名称命名为hlong(大家可以随意起名),并在该目录下创建以下几个目录:
classes(类目录)
functions(函数目录)
install(安装目录)
templates(后台模板目录)
uninstal(卸载目录)

4、在install目录下新建一个config.inc.php文件
复制粘贴以下代码:
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$module = 'hlong';
$modulename = '红龙';
$introduce = '红龙测试模块';
$author = 'hlong';
$authorsite = 'http://www.xxx.xxx';
$authoremail = 'xxx@xx.com';
进入后台“更新缓存”这时候可以看到一个“红龙”模块处于可安装状态,但是这时候还没完成,我们继续。。


5、install目录下新建extention.inc.php文件
(1)parentid=29 表示在“模块列表”显示;
(2)parentid=0 表示在“主菜单”显示;
(3)parentid=其他(可在“拓展-菜单管理”中查看),表示在对应菜单显示;
复制粘贴以下代码:
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$parentid = $menu_db->insert(array(
'name'=>'hlong',
'parentid'=>'29',
'm'=>'hlong',
'c'=>'hlong',
'a'=>'init',
'data'=>'',
'listorder'=>0,
'display'=>'1'), true);
$menu_db->insert(array('name'=>'add', 'parentid'=>$parentid, 'm'=>'hlong', 'c'=>'hlong', 'a'=>'add', 'data'=>'', 'listorder'=>0, 'display'=>'1'));
$menu_db->insert(array('name'=>'edit', 'parentid'=>$parentid, 'm'=>'hlong', 'c'=>'hlong', 'a'=>'edit', 'data'=>'', 'listorder'=>0, 'display'=>'1'));
$menu_db->insert(array('name'=>'delete', 'parentid'=>$parentid, 'm'=>'hlong', 'c'=>'hlong', 'a'=>'delete', 'data'=>'', 'listorder'=>0, 'display'=>'1'));
$language = array('hlong'=>'红龙测试','add'=>'添加','edit'=>'修改','delete'=>'删除');
通过上述配置,我们在创建模块的同时,可以同时创建几个菜单“添加,修改,删除”


6、创建控制器文件和模板文件:
5步骤中,我们可以看到创建的内容(模块:hlong,控制器:hlong,方法:init)
控制器文件复制粘贴以下代码:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin', 'admin', 0);
class hlong extends admin {
function __construct() {
parent::__construct();
}
public function init() {
include $this->admin_tpl('hlong');
}
}
由上述控制器文件,我们可以知道模板名称是“hlong”,在templdates目录下新建个test.tpl.php(注意后台模板文件后缀名为".tpl.php")文件
模板文件复制粘贴以下代码:
<?php
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header','admin');?>
<div我是红龙模块的测试内</div>
</body>
</html>


7、在install目录新建个modules.sql文件写上以下代码
INSERT INTO `phpcms_module` ( `module`, `name`, `url`, `iscore`, `version`, `description`, `setting`, `listorder`, `disabled`, `installdate`, `updatedate`) VALUES ('hlong', '红龙测试', '', '0', '1.0', '', '', '0', '0', '2017-05-24', '2017-05-24');
iscore(1:系统内置模块,0:可选模块);
disabled(1:禁止卸载,0:可卸载);
setting是模块的配置变量,是字符串数组

8、在install目录下新建model.php文件:
安装模块时,系统会根据这个数组的值调用同目录下的同名sql文件
复制并粘贴以下代码:
<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
return array('hlong');
?>
在install目录下新建hlong.sql文件
复制并粘贴以下代码:


9、在model目录下新建hlong_model.class.php文件:
复制并粘贴以下代码:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class hlong_model extends model {
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'hlong';
parent::__construct();
}
}
?>

10、再次进入后台“模块管理”找到刚才的模块,点击安装:


11、在uninstall目录下新建extention.inc.php和hlong.sql文件,extention.inc.php返回值即是需要删除的表名,同时在uninstall目录中新建对应表名的dropsql语句:
extention.inc.php:
<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('UNINSTALL') or exit('Access Denied');
return array('hlong');
?>
hlong.sql:
DROP TABLE IF EXISTS `phpcms_hlong`;


12、再次进入后台“模块管理”,找到对应的模块,点击可卸载

