🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 基本结构 > controller(插件前后台应用类) view(插件前后台应用模板) _config.php(插件配置文件,此文件为插件不可缺少的文件,没有此文件,后台插件管理里没法看到此插件) ## _config.php代码说明 ~~~ <?php return [ 'title' => '在线客服', 'author' => 'IT平民', 'url' => 'http://www.sdcms.cn', 'install'=> 'CREATE TABLE sd_plug_service (id int(10) NOT NULL AUTO_INCREMENT,title varchar(50) DEFAULT NULL,qq varchar(50) DEFAULT NULL,ordnum int(10) DEFAULT NULL,islock int(10) DEFAULT NULL,PRIMARY KEY (id))', 'delete'=> 'DROP TABLE sd_plug_service', 'admin'=>'1', ]; ~~~ 配置文件参数说明: > title参数 是插件的名称 author参数 是插件的作者 url参数 是插件的网址 install参数 是安装插件时执行创建数据表的SQL语句等,多条语句使用@@@@间隔 delete参数 是卸载插件时执行的SQL语句,多条语句使用@@@@间隔 admin参数 是代表是否有后台管理,为1说明有后台管理,为0说明没有后台管理 ## controller文件夹说明 默认插件中一般均含有下面2个文件 > indexcontroller.php (插件前台默认首页文件名,不可更改) admincontroller.php (插件后台默认首页文件名,不可更改) #### indexcontroller.php说明 ~~~ <?php class IndexController extends PlugController { public function __construct() { parent::__construct(); if(!C('plug_map')) { #首先检查插件是否安装,上面代码中的plug_map中的map即为插件所在文件夹的名称,如果没有安装,则禁止继续执行 die('插件未安装'); } } public function Index() { #这里是插件前端需要处理的一些业务逻辑 $rs=$this->db->row("select * from sd_plug_map where id=1 limit 1"); if($rs) { foreach($rs as $key=>$val) { $this->assign($key,$val); } if(ismobile()) { $this->assign('width','100%'); } $this->display("index.php"); } } } ~~~ #### admincontroller.php说明 ~~~ <?php class AdminController extends PlugController { public function __construct() { parent::__construct(); if(!C('plug_map')) { #首先检查插件是否安装,上面代码中的plug_map中的map即为插件所在文件夹的名称,如果没有安装,则禁止继续执行 die('插件未安装'); } $this->check_admin(); } public function Index() { if(IS_POST) { $arr=['state'=>'error','msg'=>'error']; $d['point_x']=F('t0'); $d['point_y']=F('t1'); $d['mapkey']=F('t3'); $d['height']=getint(F('t4'),400); if(isset($_POST['t2'])) { $d['remark']=$_POST['t2']; } else { $d['remark']=''; } $this->db->update('sd_plug_map','id=1',$d); $arr['state']='success'; $arr['msg']='保存成功'; $this->add_log($arr['msg']); echo json_encode($arr); } else { $rs=$this->db->row("select * from sd_plug_map where id=1 limit 1"); if($rs) { foreach($rs as $key=>$val) { $this->assign($key,$val); } $this->display("admin/index.php"); } } } public function view() { #读取模板,模板路径相对于插件所在文件夹 $this->display("admin/view.php"); } } ~~~ ## view文件夹说明 view文件夹中存放前台与后台的模板文件,名称和路径可以自由定义。