频道模块存放的目录是 /application/频道目录/ 插件存放的目录是 /plugins/插件目录/ 他的安装目录都是/install/ 推荐参考默认的 /application/cms/install/ 复制整个安装目录出来进行修改 install.sql 数据库资料,一般来说,这是必须的,一个模块是缺少不了数据库的 数据库中其它都好理解,但是有一项非常关键的地方,大家务必高度重视 举个例子 ~~~ INSERT INTO `qb_config` (`id`, `type`, `title`, `c_key`, `c_value`, `form_type`, `options`, `ifsys`, `htmlcode`, `c_descrip`, `list`, `sys_id`) VALUES(0, -1, 'SEO标题', 'mseo_title', '', 'text', '', 0, '', '', 100, 4); ~~~ `id`, `type`, 这两项是非常关键的, id的值全部设置为0 设置为空即''也可以, **type的值必须设置为-1** 非常关键,重要的话,再重复一次, **type的值必须设置为-1** 因为系统所有的配置都存放在qb_config这个数据表里, 安装的时候,如何区分开来,就是根据 type为-1进行特别处理的. 其它各项参数保留从你原来系统导出来的值即可 你在本地调试模块添加参数的时候,在后台开发者功能那里添加各项参数, 添加好之后,就需要把他们导出来. 导出来后,其它可以不变,就只要把 id type 这两项,按上面说的,改一下,即可 用到其它数据表的话,最好是加上 DROP TABLE IF EXISTS ******; 如果有用到钩子的话, ~~~ INSERT INTO `qb_hook_plugin` (`id`, `hook_key`, `plugin_key`, `hook_class`, `about`, `ifopen`, `list`, `author`, `author_url`, `version`, `version_id`) VALUES(0, 'layout_body_foot', '', 'app\\weibo\\hook\\MsgRemind', '有新的微博动态消息,就弹层提醒', 1, 0, '齐博', 'http://www.php168.com', '', 0); ~~~ 还需要你把钩子的数据表导出来,如上所示. 钩子数据表也需要把id的值变成0 其它就不需要修改 [![](https://box.kancloud.cn/04bf4226ecce3672411717b357f4bd7f_1772x524.jpg)](https://box.kancloud.cn/04bf4226ecce3672411717b357f4bd7f_1772x524.jpg) 如果安装后,需要执行一些特别的操作,可以把脚本写在 install/Install.php 这个文件 ~~~ public function run($id=0){ } ~~~ 方法统计用这个 $id代表安装成功以后对应的模型ID 系统卸载时,要把残留全清空的话,需要扫行脚本的话, install/Uninstall.php 请在这个文件写脚本. ~~~ public function run($id=0){ query("DELETE FROM `qb_hook_plugin` WHERE `hook_class` = 'app\\weibo\\hook\\Content'"); query("DELETE FROM `qb_hook_plugin` WHERE `hook_class` = 'app\\weibo\\hook\\MsgRemind'"); } ~~~ 他会在卸载前先执行.因为卸载后整个目录都会被删除掉. 比如上面的就是要钩子清空掉. 不然会残留有钩子,下次安装的时候,又会重复出现钩子.容易造成重复执行的问题. 如果仅仅是操作数据库的话,也可以把数据库代码放到 uninstall.sql 这个文件里边 重要提示: 如果安装时要安装钩子的话,请务必要确认卸载的时候,要把钩子清除干净,以防止用户重复安装导致多个钩子重复运行. info.php 这个就是参数配置文件,每个模块都一样,对应的修改即可 ~~~ return [ 'keywords'=>basename(dirname(__DIR__)), //关键字,即是目录名也是数据表区分符 'name'=>'微动态', //模块名称 'author'=>'齐博', //开发者 'author_url'=>'http://www.php168.com', //开发者网站或者是演示网址 'type'=>'1', //当前模块是否可以复制 'about'=>'', //介绍 'version'=>'1.0', //版本号 'icon'=>'fa fa-fw fa-weibo', //CSS图片 'ifsys'=>'0', //是否禁止卸载 'config_group' =>['基础设置',], //参数配置分组 //涉及到的数据表,不要写前缀 'sql_db' =>['content','content1','field','module','member','sort','groups','visit','feed','fav'], 'bind_modules' =>'bbs', //依赖于哪个模块,多个用逗号隔开 'bind_plugins' =>'', //依赖于哪个插件,多个用逗号隔开 ]; ~~~