> 插件目錄存放在`A/exts`文件夾下面
> 安裝插件的時候,把插件文件夾放到此處即可
## 舉例說明
根據官方安裝包里面的test插件demo來說明
~~~
test 插件文件夾
├─class 存放擴展類,該擴展類會被安裝的時候直接復制到FrPHP/Extend下面
├─controller
│ ├─admin 后臺控制器存放位置,安裝的時候直接復制到A/plugins下面
│ └─home 前臺控制器存放位置,安裝的時間直接復制到Home/plugins下面
├─tpl
│ ├─plugins-descripiton.html 插件安裝說明,插件的簡介,使用方法
│ └─plugins-body.html 插件配置文件,自己構造需要存放的參數表單
├─config.php 插件配置說明文件
├─PluginsController.php 插件控制器,安裝,卸載,數據處理
... 更多插件的其他文件,可以自由放置
~~~
config.php
~~~
return [
'name'=>'極致插件DEMO',//插件名,必須與插件文件夾名字相同
'desc'=>'這是一個極致插件開發的案例展示',//插件介紹
'author'=>'留戀風2581047041@qq.com',//作者介紹,這里可以把自己的聯系方式帶上去,方便用戶溝通
'version'=>'1.0',//插件版本,默認1.0為最低版本
'update_time'=>'2019-08-14',//插件更新時間,格式:Y-m-d
'module'=>'Home',//插件應用的模塊,Home表示前臺模塊,Admin表示后臺模塊
];
~~~
PluginsController.php
~~~
<?php
namespace A\exts;
use FrPHP\lib\Controller;
use FrPHP\Extend\Page;
class PluginsController extends Controller {
//自動執行
public function _init(){
/**
繼承系統默認配置
**/
//檢查當前賬戶是否合乎操作
if(!isset($_SESSION['admin']) || $_SESSION['admin']['id']==0){
Redirect(U('Login/index'));
}
if($_SESSION['admin']['isadmin']!=1){
if(strpos($_SESSION['admin']['paction'],','.APP_CONTROLLER.',')!==false){
}else{
$action = APP_CONTROLLER.'/'.APP_ACTION;
if(strpos($_SESSION['admin']['paction'],','.$action.',')==false){
$ac = M('Ruler')->find(array('fc'=>$action));
Error('您沒有【'.$ac['name'].'】的權限!',U('Index/index'));
}
}
}
$webconf = webConf();
$this->webconf = $webconf;
$customconf = get_custom();
$this->customconf = $customconf;
//插件模板頁目錄
$this->tpl = '@'.dirname(__FILE__).'/tpl/';
/**
在下面添加自定義操作
**/
}
//執行SQL語句在此處處理,或者移動文件也可以在此處理
public function install(){
//檢查是否已安裝該插件,對應的插件文件是否已經存在
//執行SQL,注冊hook(控制器方法覆蓋不需要注冊hook)
return true;
}
//卸載程序,對新增字段、表等進行刪除SQL操作,或者其他操作
public function uninstall(){
//對hook表內注冊的hook進行刪除
return true;
}
//安裝頁面介紹,操作說明
public function desc(){
$this->display($this->tpl.'plugins-description.html');
}
//配置文件,插件相關賬號密碼等操作
public function setconf($plugins){
//將插件賦值到模板中
$this->plugins = $plugins;
$this->config = json_decode($plugins['config'],1);
$this->display($this->tpl.'plugins-body.html');
}
//獲取插件內提交的數據處理
public function setconfigdata($data){
M('plugins')->update(['id'=>$data['id']],['config'=>json_encode($data,JSON_UNESCAPED_UNICODE)]);
setCache('hook',null);//清空hook緩存
JsonReturn(['code'=>0,'msg'=>'設置成功!']);
}
}
~~~
- 引言
- 條款
- 開始使用
- 模板標簽
- 公共配置
- 系統配置
- 自定義配置
- 網站欄目
- 全局欄目屬性
- 導航欄相關
- 當前欄目下的直系下級
- 當前欄目下的直系上級
- 欄目詳情頁
- 欄目列表頁
- 欄目分頁
- 輸出三級及三級以上欄目
- 當前位置面包屑
- 獲取當前欄目的頂級欄目
- 直播講解欄目相關
- 文章詳情頁
- 基本內容
- 點贊
- 收藏
- 相關文章
- 輸出新增字段
- 商品詳情頁
- 基本內容
- 輸出新增字段
- 商品圖集
- 點贊
- 收藏
- *點評星星
- 加入購物車
- *評論
- 相關商品
- 自定義字段
- 原樣輸出
- 單選字段
- 多選字段
- loop標簽
- 通用說明
- loop分頁
- 案例說明
- like使用
- 怎么判斷loop沒有數據
- limit使用
- day參數
- table缺省參數
- 單選多選相關
- 單選字段輸出
- 多選字段輸出
- 特殊輸出
- 輸出換行
- 替換字符串
- 輸出被解析的HTML原句
- 截取字符串
- 內容body去除HTML
- 分割字符輸出
- foreach標簽
- for標簽
- fun標簽
- php標簽
- 不解析標簽
- if..else..標簽
- screen篩選標簽
- 客戶端判斷
- 輪播圖
- 友情鏈接
- 自定義圖集輸出
- Tags標簽調用及使用說明
- 網站留言調用
- 自定義單頁
- 系統架構
- 高級功能
- ajax數據交互
- ajax在欄目頁的應用
- ajax在screen篩選中的應用
- screen多選篩選
- Message留言表單
- 萬能表單
- 多語言支持
- 系統高級配置說明
- 網站動態鏈接
- 郵件發送
- 插件開發
- 控制器方法覆蓋(cover)[簡單]
- 控制器方法鉤子(hook)[復雜]
- 制成后臺安裝插件
- 附錄
- 時間
- 富文本編輯器導航
- 版本更新