挂件开发
挂件路径
挂件文件放在 public/plugins/widget/ 目录下。
文件名不能重复,采用首字母大写的驼峰命名,例如 ActiveClient。
挂件类
文件名和类名保持一致,挂件标识即文件名。例如:public/plugins/widget/ActiveClient.php。
示例
<?php
namespace widget;
use app\common\lib\Widget;
use app\common\model\ClientModel;
class ActiveClient extends Widget
{
protected $title = '活跃用户';
protected $weight = 60;
protected $columns = 1;
public function getData()
{
$data = [];
$active = ClientModel::where('status', 1)->where('last_login_time', '>=', time()-15*24*3600)->count();
$count = ClientModel::where('status', 1)->count();
$data['active_client_count'] = $active;
$data['active_client_percent'] = $count>0 ? bcmul(($active/$count), 100, 1) : '0.0';
return $data;
}
public function output(){
$data = $this->getData();
return <<<HTML
<div class="top-item active-div"><div><span>{$data['active_client_count']}</span></div> <div>
活跃用户(人)
</div> <div class="trend blue-text active-box">活跃率 {$data['active_client_percent']}%</div> <div><span></span> <span></span> <span></span> <span></span></div></div>
HTML;
}
挂件类必须继承 app\common\lib\Widget。
挂件属性
| 属性 | 说明 |
|---|---|
$title | 挂件名称,必填 |
$weight | 挂件排序权重,越小越靠前,默认值为 100 |
$columns | 挂件占用列数,范围为 1–4,默认值为 1 |
必须实现的方法
| 方法名称 | 描述 | 参数 | 返回 |
|---|---|---|---|
getData | 获取挂件数据 | — | 返回数组,内容由“获取挂件数据”接口返回 |
output | 输出挂件内容 | — | 返回用于显示的字符串,可包含 HTML 和 JavaScript,内容由“获取挂件内容”接口返回 |
通过 Hook 增加挂件
使用 admin_widget Hook,返回实例化的挂件类;注意不要与挂件目录中的文件冲突。
示例
add_hook("admin_widget", function(){
return new ActiveClient();
});上传挂件后,重新登录并在管理组中添加对应的挂件权限,即可使用。