和上一章节差不多主要多了一个后台设置以及插入数据
这次我们在addons添加一个dajishi文件如下
然后前往官网[http://www.115cms.com/index/home/set.html](http://www.115cms.com/index/home/set.html)
基本设置创建模板插件如图
![](http://cdn.dow.115cms.com/2020-02-29_5e59d1d2894a6.jpg)
创建好你目录命名的插件footer标识方可进行下一步
如果不申请的话你是无法在后台安装的
controller 是控制器
\-----Dajishi.php 控制器首字母必须是大写开头
view 视图
\-----home.html 钩子输出的视图
\-----index-index.html 控制器输出的模板文件
config.php 基本设置
dajishi.php 配置文件
ico.png 插件的图标
install.sql 安装的sql语句
uninstall.sql 卸载的sql语句
addons/dajishi/dajishi.php 如下代码
~~~
<?php
namespace addons\dajishi;
use app\api\controller\Addon;
use Think\Db;
use Think\Config;
/*
@梦雨
50361804@qq.$com
www.115cms.com
*/
class dajishi extends Addon {
//插件的配置
public $info = array(
'name' => 'dajishi', //标识名称与文件同名
'title' => '大记事', //插件标题
'description' => '用于显示网站的记录大记事', //插件描述
'status' => 1, //状态
'pic' => '/addons/dajishi/ico.png', //插件的图标
'author' => '梦雨', //插件的作者
'version' => '1.0'
//插件版本
);
//有后台设置显示数据表方法页面
public $admin_list = array(
//条件 例如只显示open为1的数据
//'where' => array('open' => 1),
'where' => array() ,
//显示的表
'model' => 'dajishi',
//排序方式
'order' => 'id desc',
//搜索的字段 多个字段用|隔开例如 title|uid
'ks' => 'content'
);
public $custom_adminlist = 'admin.html';
//万年不变安装方法
public function install() {
//$this->info['description']是插件的描述
//$this->info['name']是插件的标题
//dajishi是钩子名称
$this->getisHook('dajishi', $this->info['name'], $this->info['description']);
$db_config = array();
$db_config['prefix'] = Config::get('database.prefix');
$dirname = dirname(__FILE__);
$sqldata = file_get_contents($dirname . '/install.sql');
$sql_array = preg_split("/;[\r\n]+/", str_replace('my_', $db_config['prefix'], $sqldata));
foreach ($sql_array as $k => $v) {
if (!empty($v)) {
Db::query($v);
}
}
return true;
}
//万年不变卸载方法
public function uninstall() {
$db_config = array();
$db_config['prefix'] = Config::get('database.prefix');
$dirname = dirname(__FILE__);
$sqldata = file_get_contents($dirname . '/uninstall.sql');
$sql_array = preg_split("/;[\r\n]+/", str_replace('my_', $db_config['prefix'], $sqldata));
foreach ($sql_array as $k => $v) {
if (!empty($v)) {
Db::query($v);
}
}
return true;
}
//插件添加钩子dajishi的方法
public function dajishi() {
$c = $this->getConfig('dajishi');
$this->assign('c', $c);
//输出方法到/addons/dajishi/home.html页面显示
if ($c['open'] == 1) {
echo $this->tplfetch('home');
}
}
}
~~~
然后addons/dajishi/controller/Dajishi.php 如下代码
~~~
<?php
namespace addons\dajishi\controller;
use app\index\controller\Addons;
use think\Db;
class Dajishi extends Addons {
//添加页面方法
public function index() {
$c = $this->getConfig('dajishi');
$this->assign('c', $c);
if ($c['open'] == 0) {
$this->error('页面不存在', '/');
}
//输出在view目录下的模板显示
echo $this->fetch('addons/dajishi/view/index-index.html');
}
//后台添加大记事
public function add() {
//后台操作请加上不然未登录用户都会能访问编辑
if (!session('admin_name')) {
$this->error('请登录', url('admin/login/index'));
}
if (request()->isPost()) {
$data['time'] = strtotime(input('time'));
//xss是过滤方法
$data['content'] = xss(input('content'));
$data['open'] = input('open');
if (!Db::name('dajishi')->data($data)->insert()) {
$this->error('添加失败');
} else {
$this->success('添加成功');
}
}
//输出在view目录下的模板显示
echo $this->fetch('addons/dajishi/view/index-add.html');
}
}
~~~
config.php设置文件
~~~
<?php
return array(
//当config.php不存在的时候当前插件就没有设置的方法
'open' => array(
'title' => '是否开启',
'type' => 'radio',
'options' => array(
'1' => '启用',
'0' => '关闭',
) ,
'value' => '1',
'labelwidth' => '150px',
) ,
'title' => array(
'title' => '页面标题',
'type' => 'text',
'value' => '115CMS大记事',
'labelwidth' => '150px',
'width' => '400px',
) ,
'keywords' => array(
'title' => 'SEO关键字',
'type' => 'textarea',
'rows' => '10',
'cols' => '54',
'value' => '115cms,大记事',
'labelwidth' => '150px',
) ,
'description' => array(
'title' => 'SEO描述',
'type' => 'textarea',
'rows' => '10',
'cols' => '54',
'value' => '115CMS大记事',
'labelwidth' => '150px',
) ,
);
~~~