php文件插件,插件功能.php文件详解

我们以友情链接插件为例讲解

首先我们看到上面引用及命名空间,不多介绍,照猫画虎就行。

### 接下来首先我们要写上插件的相关信息,放到info这个数组中

包括name【全部名称字母表示并且小写】,title【插件名称,可为中文】

description【插件描述】,status【一般为1,表示可用】,author【作者信息】

version【版本号】

### 接下来是$admin\_list

如果你在后台需要展示插件的数据,或者有相关的增删改查操作,则需要配置该数组,数组中配置需要显示的字段及对应名称。下面还可以设置如何排序,模型使用的是什么

### 接下来我们需要设置的就是

public $custom\_adminlist = 'adminlist.html';

表示后台显示用插件自身的模板,而不是系统提供的通用后台插件模板

adminlist.html这个文件也存在于插件目录,后面我们会说到这个文件。

现在我们就要写上安装和卸载方法了,默认在插件安装时,如果不需要安装数据库,可以直接return true;如果需要安装数据库,那么我们就需要按照友情链接插件的这种写法,并且在插件根目录放instal.sql文件。

#### **这时候需要特别强调一点:**

如果默认你的插件时没有钩子的,又不想去手动添加钩子,这时候我们需要填上一句话

> $this->getisHook('juan', $this->info\['name'\], $this->info\['description'\]);

可以看到第一个参数就是我们的钩子名称,后面的是我们的插件名称和描述。

如果钩子名称使用了“juan”,那么我们在安装和卸载插件后,必须要有个function juan()这个方法作为插件钩子方法来在前台调用。

**也就是hook('juan')**

**\### 强调的另外一个问题就是卸载方法。**

如果你想在卸载插件的时候就卸载插件的数据库,那么就在插件根目录放上一个uninstall.sql,里面放上sql语句,如``DROP TABLE IF EXISTS`ea_superlinks`;

如果你不想在卸载时删除插件已经存在的各类数据,毕竟数据不易。那么在卸载方法里直接填写return true 也是可以的。

我们现在重点说一下钩子方法的写法和重要性。

我们都知道,前台可以放钩子的地方很多,可以放在控制器里作为一种功能代码使用,也可以放在模板html的文件中做为一种展示使用。

如果是作为展示,那么我们就需要像友情插件这种,在钩子里最后写上 echo $this->tplfetch('widget'); 来调用插件模板,这个模板文件就存在view这个文件夹里。

widget表示文件名称。如果不需要展示,而是写在控制器和其他方法里调用,那么就无需写上这句话,直接处理相关的数据即可。

例如:$data=hook('forumattach',array('content'=>$data\['content'\],'id'=>$forum->id));

这就是说 ,我们可以在钩子forumattach这个方法中处理后面这个数组,然后再返回去$data。

~~~

namespace addons\superlinks;

use app\common\controller\Addon;

use Think\Db;

use Think\Config;

/**

* 合作单位插件

* @author 李二狗

*/

class superlinks extends Addon

{

public $info = array(

'name' => 'superlinks',

'title' => '友情链接',

'description' => '友情链接',

'status' => 1,

'author' => 'liergou',

'version' => '0.1'

);

public $admin_list = array(

'listKey' => array(

'title' => '站点名称',

'type' => '类型',

'status' => '显示状态',

'level' => '优先级',

'create_time' => '创建时间',

),

'model' => 'superlinks',

'order' => 'level desc,id asc'

);

public $custom_adminlist = 'adminlist.html';

public function install()

{

$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('ea_',$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('ea_',$db_config['prefix'],$sqldata));

foreach ($sql_array as $k => $v) {

if (!empty($v)) {

Db::query($v);

}

}

return true;

}

//实现的pageFooter钩子方法

public function friendLink($param)

{

$list = Db::name('superlinks')->where('status = 1')->order('level desc,id asc')->select();

foreach($list as $key=>$val){

if($val['type'] == 1){//图片连接

$list[$key]['savepath'] = get_cover($val['cover_id'],'savepath');

}

}

$this->assign('list', $list);

$this->assign('link', $param);

echo $this->tplfetch('widget');

}

}

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值