这里不说后台一键复制 仅仅是以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_ 的 不要搞错了 ];
接着上次继续来,
admin 目录
Category.php 辅栏目没有的可以删除 删除的话就需要把 config.php 中的 'use_category'=>true, 删除
打开这个文件代码
<?php namespace app\cms\admin; //命名空间 很容易理解 定位到 application\cms\admin 目录 也就是当前文件的所在目录 use app\common\controller\admin\Category AS _Category; // use 更容易了 导入 application\common\controller\admin\Category 并且设置别名为 _Category // 这里更容易了 Category 继承 _Category 也就是 app\common\controller\admin\Category (可能表达不清晰 反正是这么个意思) class Category extends _Category { //此处不需要写任何代码 }
一个辅栏目的后台就定义完了 是不是想哭
如果你的模块是news 你只需要搜索 cms 改为 news 就可以了 admin 目录下的所有文件都是一样的改法 下面就不重复了简略说下作用即可
Content.php 内容和栏目控制器 必须存在
Field.php 字段定义可有可无 没有模型功能或者不需要定义字段就可以删除
Info.php 辅栏目内容 可有可无
Module.php 模型
Setting.php 设置
Sort.php 栏目
index\wxapp 小程序目录 没研究呢后期补上
index目录 member目录 model目录 traits目录都是和admin 一样 把cms换为你的模块名即可
上面说的这些其实在后台都可以一键复制自动化实现 介绍这么多就是为了让大家了解下X系统做个模块多么省事
上面方法做出的模块都是千篇一律 没特色 下期咱们说一下个性化的模块 算是进阶篇
这个还有点印象 差点全忘了 哈哈
看不懂!香菇蓝瘦
学习制作模块
写得好详细.花了少精力