**插件开发,如果你会了,基本就可以二次开发了。** 我们就以开发友情链接插件为例,看看插件到底应该如何开发吧。 首先我们需要建立一个友情链接的目录,放在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,前台的话就需要加上。