## 基本结构
> 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文件夹中存放前台与后台的模板文件,名称和路径可以自由定义。