分享
  • 收藏
  • 举报
    X
    简单的模块制作说明---初级(已完成)
    1381
    21

    这里不说后台一键复制 仅仅是以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系统做个模块多么省事 

    上面方法做出的模块都是千篇一律 没特色 下期咱们说一下个性化的模块 算是进阶篇




     

    15
    赏礼
    赏钱
    收藏
    点击回复
        全部留言
    • 21
    0 赏钱 赏礼回复
    • Szup.com乐刷朱弟 实战运营者 消费:4704.58元 2018-08-06 21:35 21:356楼

      看不懂!香菇蓝瘦

    0 赏钱 赏礼回复
    • 纳兰婕卿 普通粉丝 消费:19.9元 2018-08-06 19:57 19:576楼

      我复制过去之后 不知道为什么报错提示缺少首页的控制器 


    0 赏钱 赏礼回复
    • 祯禛 普通粉丝 消费:1286.63元 2018-06-01 17:46 17:466楼

      想哭……

    0 赏钱 赏礼回复
    • 小丹 普通粉丝 消费:0元 2018-05-26 11:45 11:456楼

      学习学习


    0 赏钱 赏礼回复
    • A.竹林听雪 普通粉丝 消费:6.56元 2018-05-26 08:06 08:066楼

      suifeng版主辛苦了!

    0 赏钱 赏礼回复
    • 黑鲨咨询 普通粉丝 消费:0元 2018-05-24 14:25 14:256楼

        好东西,谢谢楼主

    0 赏钱 赏礼回复
    0 赏钱 赏礼回复
    • admin 超级管理员 消费:3.03元 2018-05-24 09:35 09:356楼

      写得好详细.花了少精力

    0 赏钱 赏礼回复
    • Sivan 普通粉丝 消费:1.18元 2018-05-24 09:28 09:286楼

      s关注了

    0 赏钱 赏礼回复
    • 阿里巴巴 白金粉丝 消费:3000.22元 2018-05-24 09:16 09:166楼

    0 赏钱 赏礼回复
    • myron0101 普通粉丝 消费:0元 2018-05-24 09:10 09:106楼

      插眼

    0 赏钱 赏礼回复
    更多回复
    恢复多功能编辑器
  • 3 1
  • 推荐内容
    扫一扫访问手机版
    请选择要切换的马甲:

     
    网页即时交流
    QQ咨询
    咨询热线
    020-28998648