频道模块存放的目录是
/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);

idtype,
这两项是非常关键的, 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 其它就不需要修改

如果安装后,需要执行一些特别的操作,可以把脚本写在

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
这个文件里边

重要提示:

https://www.wanxiangyundang.com/
如果安装时要安装钩子的话,请务必要确认卸载的时候,要把钩子清除干净,以防止用户重复安装导致多个钩子重复运行.

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' =>'', //依赖于哪个插件,多个用逗号隔开
];

最新文章

  1. 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】
  2. 初识Less(2015年05月23日)
  3. js获取上传文件的绝对路径
  4. 《UNIX编程环境》的源代码的第二个版本Ubuntu下编
  5. 201521123038 《Java程序设计》 第六周学习总结
  6. chromium源码阅读--进程的Message Loop
  7. log4j日志输出性能优化-缓存、异步
  8. ●BZOJ 3931 [CQOI2015]网络吞吐量
  9. sql xml中 in 的用法
  10. 洛谷P1776--宝物筛选(单调队列+多重背包)
  11. Activiti中子流程:SubProcess,CallActiviti的区别
  12. angular4 辅助路由
  13. Kubernetes(k8s) docker集群搭建
  14. ios系统中各种设置项的url链接
  15. win10 下Oracle安装
  16. python3安装crypto出错,及解决方法
  17. java启动3个线程轮流打印数字
  18. 用C#实现对MSSqlServer数据库的增删改查---Server层(WaterLevelRecordServer.cs、DeviceRecordServer.cs)
  19. liunx下安装mysql(未完待更新)
  20. Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】

热门文章

  1. 巧用Prometheus来扩展kubernetes调度器
  2. vue自定义switch开关,使用less支持换肤
  3. 057_末晨曦Vue技术_处理边界情况之强制更新($forceUpdate)与通过 v-once 创建低开销的静态组件
  4. 在 Linux 中安装 MongoDB 的流程
  5. systemd之导致内核 crash
  6. 【HMS core】【FAQ】典型问题合集7
  7. 动态规划——leetcode5、最长回文子串
  8. rh358 002 fact变量获取 ansible配置网络 service_facts
  9. KingbaseES V8R6C5集群部署启动securecmdd服务配置案例
  10. 图-kruskal算法,prim算法