MENU

关闭

文档

插件的目录结构

插件的位置/app/

例如在app目录创建一款插件命名为hello

结构如下

/app/hello/  
  ├─controller //控制器目录
  │  │─Index.php//注意首字母大写 后边会示例代码
  │  ├─可以创建更多的控制器
  ├─view //视图目录
  │  ├─home.html//这里只是我们的一个例子 这是我们钩子指向的一个路径 代码自己diy
  │  ├─指向的文件这里创建
  ├─hello.php//配置文件
  │─route.php//路由配置文件主要是缩短url路径
  │─pic.jpg//是我们的插件图标 在配置文件指向这个地址 不一定非要pic.jpg
  └─更多...

控制器里面的index.php配置  请大家举一反三 

<?php
namespace app\hello\controller;

use think\Controller;
use think\Db;
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2020 http://115cms.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: @梦雨 <50361804@qq.com>
// +----------------------------------------------------------------------
// | 这是一个控制器Index 下面的index是方法
// +----------------------------------------------------------------------
class Index extends Controller
{
    //首页
    public function index()
    {
        hook('hello');
        echo "</br>第一个钩子的调用方式 标签:{:hook('hello')} 在任意模板位置存放调用</br>";
        hook('hello1');
        echo "</br>第二个钩子的调用方式 标签:{:hook('hello1')} 在任意位置存放调用</br>";
        echo '</br>你好!我是第一个插件方法示例 因为我配置了路由访问我就是/h_index.html </br>如果没有配置 那么我的地址就在/hello/index/index.html 似乎有点长';
    }
}

hello.php 配置 这个文件要和插件的目录一样

<?php
namespace app\hello;
use app\index\controller\Addons;
use think\Db;
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2020 http://115cms.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: @梦雨 <50361804@qq.com>
// +----------------------------------------------------------------------
class hello extends Addons
{
    // 插件的信息配置
    public $info = array(
        'name' => 'hello',//插件目录,标识
        'title' => '示例插件',//插件名称
        'description' => '一个简单的示例插件',//插件描述
        'banben' => '1.0',//插件版本号
        'pic' => '/app/hello/pic.jpg',//插件图标
        'admin' => '1',//1是有设置配置在下方配置信息,0是无
        'set' => '/index.php/h_index.html',//插件的其他管理地址在在已安装插件进入的页面 留空没有
    );
    // 插件的设置配置
    public $admin = array(
    	'demo' => array(
    	    'md' => '12',//容器宽度1-12
    		'title' => '示例开关',//标题说明
    		'type' => '单选框',//类型 单选框 选择框 输入框 文本域 密码框 附件 颜色 时间
    		'options' => array(
    			'1' => '启用',
    			'0' => '关闭',
    		),
    		'value' => '1',//默认值
    	),
    	'demo1' => array(
    	    'md' => '4',
    		'title' => '示例选择',
    		'type' => '选择框',
    		'options' => array(
    			'1' => '选择一',
    			'2' => '选择二',
    		),
    		'value' => '2',
    	),
    	'demo2' => array(
    	    'md' => '4',
    		'title' => '示例输入',
    		'type' => '输入框',
    		'value' => '我的默认值',
    		'required' => 'required',//必填 可空
    	),
    	'demo3' => array(
    	    'md' => '4',
    		'title' => '示例密码框',
    		'type' => '密码框',
    		'value' => '',
    		'required' => 'required',//必填 可空
    	),
    	'demo4' => array(
    	    'md' => '12',
    		'title' => '示例文本域',
    		'type' => '文本域',
    		'value' => '',
    		'rows' => '4',//文本域高度
    		'required' => 'required',//必填 可空
    	),
    	'demo5' => array(
    	    'md' => '4',
    		'title' => '示例附件',
    		'type' => '附件',
    		'value' => '',
    		'required' => 'required',//必填 可空
    	),
        'demo6' => array(
    	    'md' => '4',
    		'title' => '时间选择',
    		'type' => '时间',
            'value' => '2021-01-01',//格式 默认值
    	),
        'demo7' => array(
    	    'md' => '4',
    		'title' => '颜色选择',
    		'type' => '颜色',
            'value' => '#ffffff',//格式 默认值
    	),
    );
    // 安装方法
    public function install()
    {
        $this->Hook('hello', $this->info['name']);//第一个钩子
        $this->Hook('hello1', $this->info['name']);//第二个钩子
        $sqldata = file_get_contents(dirname(__FILE__) . '/install.sql');
        sql($sqldata);
        return true;
    }
    // 卸载方法
    public function uninstall()
    {
        $sqldata = file_get_contents(dirname(__FILE__) . '/uninstall.sql');
        sql($sqldata);
        return true;
    }
    // 钩子一方法
    public function hello()
    {
        echo $this->view('home');
    }
    // 钩子二方法
    public function hello1()
    {
        echo '你好!我是另一个钩子的方法';
    }
}


一个完整的插件就完成

这里有一个完整的示例包 

可以下载上传到app目录后台查看效果


示例插件

示例插件下载