挂件开发
挂件路径
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方法
| 方法名称 | 描述 | 参数 | 返回 |
|---|---|---|---|
| getData | 获取挂件数据 | 需要返回一个数组, 返回的内容会通过 "获取挂件数据"接口返回 | |
| output | 输出 | 需要返回一个字符串用于显示,返回的内容支持html标签和javascript, 返回的内容会通过 "获取挂件内容"接口返回 |
通过hook增加挂件
hook名称是 admin_widget
返回的必须是实例化的挂件类,注意不要和挂件路径下的挂件冲突
示例
add_hook("admin_widget", function(){
return new ActiveClient();
});