这里不说后台一键复制 仅仅是以cms 为例简单的说下各个文件 各个配置的作用是什么 member_menu.php 会员中心菜单文件 ~~~ <?php return [ 'cms' => [ // 模块目录名 小写 'title' => 'cms', // 模块目录名 'sons' => [ [ 'title' => 'CMS功能', // 父级菜单名称 'sons' => [ [ 'title' => '我发布的内容', //子菜单名称 'link' => 'content/index' //子菜单连接 ], [ 'title' => '发布内容', //子菜单名称 'link' => 'content/postnew' ], [ 'title' => '采集公众号文章', //子菜单名称 'link' => 'content/copynews' //子菜单连接 ] ] ] ] ] ]; ~~~ Info.php ~~~ <?php namespace app\cms; // 命名空间到cms模块 新模块的需要 把cms改为模块名 小写 小写 小写 // 下面这里保持不变即可 class Info{ public static $keyword; } ~~~ config.php ~~~ <?php return [ //自动表单 前台列表页母模板 'automodel_listpage'=>APP_PATH.'cms/view/index/default/content/list.htm', //自动表单 前台详情展示页母模板 'automodel_showpage'=>APP_PATH.'cms/view/index/default/content/show.htm', //自动表单 前台辅栏目列表页母模板 'automodel_category_listpage'=>APP_PATH.'common/builder/listpage/category_list.htm', //发布信息选择模型页模板 'post_choose_model'=>APP_PATH.'common/builder/sort/model_list.htm', //发布信息选择栏目页模板 'post_choose_sort'=>APP_PATH.'common/builder/sort/layout.htm', // 是不是有副栏目 没有就删除 'use_category'=>true, //发布内容必须要选择栏目 不是的话就写 false 'post_need_sort'=>true, //模块关键字,目录名,也是数据表区分符 'system_dirname'=>basename(__DIR__), ]; ~~~ admin_menu.php 配置和会员中心菜单配置方法是一致的 不多写了 参考cms示例 install 目录 Copyinstall.php 复制的时候执行 默认或者删除就可以 install 目录 Install.php 安装的时候执行的脚本 不需要执行留空或者删除 下面是一个小示例 没实际意义 仅仅是示例 ~~~ <?php namespace app\cms\install; use app\common\controller\AdminBase; class Install extends AdminBase{ public function run($id=0){ $hook=db('hook')->where(['name'=>'cms_content_show'])->find(); //读取钩子表 //判断钩子是不是存在 不存在就执行安装钩子操作 if(!$hook){ $data=['name'=>'cms_content_show','about'=>'内容展示页接口','ifopen'=>'1']; db('hook')->insert($data); } //这里可以执行任意php代码 } } ~~~ install 目录 install.sql 安装的SQL脚本 没得说码农都懂 install 目录Uninstall.php 卸载脚本 和安装脚本一样可以执行卸载模块时候的动作 下面是个小示例 一样没有实际意义仅仅是演示 ~~~ <?php namespace app\cms\install; use app\common\controller\AdminBase; class Uninstall extends AdminBase{ public function run($id=0){ $plugins=db('plugin')->where(['id'=>$id])->value('keywords'); //卸载钩子动作 db('hook_plugin')->where('plugin_key',$plugins)->delete(); } } ~~~ install 目录 uninstall.sql 没用的可以删除 install 目录 info.php ~~~ <?php return [ 'keywords'=>basename(dirname(__DIR__)), //关键字,即是目录名也是数据表区分符 'name'=>'CMS系统', //模块名称 'author'=>'齐博', //开发者 'author_url'=>'http://www.php168.com', //开发者网站或者是演示网址 'type'=>'1', //当前模块是否可以复制 不可以复制就设为0 'about'=>'这里是模块介绍 字数不宜过多', //介绍 'version'=>'1.0', //版本号 'icon'=>'fa fa-fw fa-file-text', //CSS图片 小技巧后台模块哪里有图标选择器 可以选择个性图标 'ifsys'=>'0', //是否禁止卸载 禁止卸载就设为 1 不建议这么做 'config_group' =>['基础设置',], //参数配置分组 不建议写基础设置 可以改为 模块名设置 比如 cms设置 不然核心设置哪里一堆基础设置 //涉及到的数据表,不要写前缀 'sql_db' =>['content','content1','content2','content3','field','module','member','sort','category','info'], // 你这个模块有哪些数据表都要写在这里不然卸载的时候卸载不掉数据表 数据库命名格式 qb_模块名_数据表 比如 qb_cms_content 这里是省略 qb_cms_ 的 不要搞错了 ]; ~~~ 未完待续!!!看我一步一步重新做一个cms 简单到你怀疑人生