插件开发,如果你会了,基本就可以二次开发了。

我们就以开发友情链接插件为例,看看插件到底应该如何开发吧。

首先我们需要建立一个友情链接的目录,放在addon中

就叫superlinks,注意文件夹最好是小写。写类名的时候首字母大写。

先建立一个php文件,Superlinks.php。

该类的写法如下:

namespace addon\superlinks;

use app\common\controller\AddonBase;

use addon\AddonInterface;

class Superlinks extends AddonBase implements AddonInterface
{

   
    public $admin_list = array(
        'listKey' => array(
            'title' => '站点名称',
            'type' => '类型',
            'status' => '显示状态',
            'level' => '优先级',
            'create_time' => '创建时间',
        ),
        'model' => 'superlinks',
        'order' => 'level desc,id asc',
        'field' => '*'
    );
    public $custom_adminlist = 'adminlist.html';
 /**
     * 插件安装
     */
    public function addonInstall()
    {
    	$arr=$this->addonInfo();
    	$this->getisHook('friendLink', $arr['name'], $arr['describe']);
    	$this->installAddon($arr);
    	
        
        return [RESULT_SUCCESS, '安装成功'];
    }
    
    /**
     * 插件卸载
     */
    public function addonUninstall()
    {
    	$arr=$this->addonInfo();
    	$this->deleteHook('friendLink');
    	$this->uninstallAddon($arr['name']);
     
        
        return [RESULT_SUCCESS, '卸载成功'];
    }
    
    /**
     * 插件基本信息
     */
    public function addonInfo()
    {
        
     return [
     		     'name' => 'Superlinks',
        		 'title' => '友情链接', 
        		 'describe' => '友情链接',
        		 'author' => '苏南 newsn.net',
        		 'version' => '1.0',
     		     'has_adminlist' => '1'
               ];
    }


    //钩子方法
    public function friendLink($param)
    {
    	$list = $this->request->table('superlinks')->where('status = 1')->order('level desc,id asc')->select();
    	foreach($list as $key=>$val){
    		if($val['type'] == 1){//图片连接
    			
    			
    			$list[$key]['savepath'] = get_picture_url($val['cover_id']);
    		}
    	}
    	
    	
 
        
    
        
        $this->assign('list', $list);
        $this->assign('link', $param);
        $this->addonTemplate('widget','index'); 
 
    }

  
}

命名空间填写好,引用use的几个类写上,如果需要后台管理菜单,则需要写public $admin_list,我们是需要后台管理友情链接数据的,那么我们就添加一个$admin_list,其中field表示显示的字段,listkey表示表中的字段,order为排序方法,model则一般定义为数据表的名称。

public $custom_adminlist如果填写,则表示你需要自己编写后台管理模板,不填写则调用公共的管理模板。公共模板在app\admin\view\addon_adminlist.html。

addonInstall(),addonUninstall(),addonInfo()这三个函数是必须的,分别写的是安装、卸载和插件的信息。

在下面我们需要写一个函数,用于在前台展示友情链接。我这里写的是public function friendLink($param),这里的$param是从hook中传回来的值,这里先不做解释。

安装和卸载的时候我们需要安装钩子和删除钩子

安装时

$arr=$this->addonInfo();\\表示读取插件信息
    	$this->getisHook('friendLink', $arr['name'], $arr['describe']);\\这里安装钩子,在前台调用hook时需要引用该钩子名称friendlink
    	$this->installAddon($arr);\\这一步就是安装,如果含有数据表,则也会进行执行,数据表放在data目录下。

卸载时

    	$arr=$this->addonInfo();
    	$this->deleteHook('friendLink');\\这里就是删除钩子
    	$this->uninstallAddon($arr['name']);

此时一个插件的基本类已经写完了。

剩下的关于controller文件夹这些都是与一般的开发一致的。

$this->addonTemplate('widget','index'); 这里如果是后台调用模板不需要加上后边的index,前台的话就需要加上。