###3.11插件開發指南
---
一、插件類型介紹
CSW插件目前分為“內置控制器”、“頁面嵌入”。
1、內置控制器類型插件。
有獨立的控制器、模型、視圖目錄,后面將重點介紹該類型插件開發。
2、頁面嵌入類型插件。
該類型插件只包含兩個核心文件:run.php和run.html。
二、“內置控制器”插件開發介紹
1、插件文件及目錄結構
目錄controllers: 插件控制器目錄
目錄models: 插件模型目錄
目錄views: 插件視圖目錄
文件config.php: 插件配置信息文件
文件install.php: 安裝插件執行的SQL語句
文件uninstall.php:刪除插件執行的SQL語句
文件md5.php: MD5校驗文件,官方校驗文件
文件mark.txt: 官方發布插件的唯一標示,若是自己開發的插件就不需要該文件
2、插件訪問路徑
網站地址/index.php?s=插件名稱&c=插件控制器&a=對應的Action。
3、插件配置文件config.php規則
<?php
return array(
'name' => '文章踩頂',
'author' => 'start',
'version' => '1.0',
'typeid' => 1,
'description' => "必須有Jquery支持,將下面代碼放在內容頁面中",
'fields' => array(
array('field'=>'dingname', 'name'=>'“頂”名稱設置', 'tips'=>'默認“頂一下”。', 'formtype'=>'input', 'setting'=>"array('size'=>'100')"),
array('field'=>'cainame', 'name'=>'“踩”名稱設置', 'tips'=>'默認“踩一下”。', 'formtype'=>'input', 'setting'=>"array('size'=>'100')"),
)
);
該配置文件返回數組格式信息,參數如下介紹。
name: 插件名稱。
author: 插件作者。
version: 插件版本。
typeid: 1,(固定格式值)。
description: 插件描述信息(注意html轉義)。
fields: 插件配置參數(若沒有配置信息設置,該值可省略)。
array('field'=>'字段名稱', 'name'=>'字段顯示名稱', 'tips'=>'提醒文字', 'formtype'=>'字段類型(可參考擴展目錄的fields.php文件)', 'setting'=>"該字段類型的配置信息"),
4、插件安裝/卸載文件規則
(1)、安裝文件install.php
<?php
if (!defined('IN_FINECMS')) exit('');
return array(
"DROP TABLE IF EXISTS `{prefix}digg`;",
"CREATE TABLE IF NOT EXISTS `{prefix}digg` (
`id` mediumint(8) NOT NULL AUTO_INCREMENT,
`contentid` mediumint(8) NOT NULL,
`title` varchar(100) NOT NULL,
`cai` mediumint(8) NOT NULL,
`ding` mediumint(8) NOT NULL,
`addtime` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"
);
支持多條SQL語句,數據表前綴請用“{prefix}”表示。
(2)插件卸載uninstall.php
<?php
if (!defined('IN_FINECMS')) exit('');
return array(
"DROP TABLE IF EXISTS `{prefix}digg`;"
);
5、插件控制器controllers規則
(1)、插件公共控制器類Common.php。
<?php
/**
* 插件控制器公共類
*/
class Plugin extends Common { //繼承通用公共類
protected $plugin; //插件模型
protected $data; //插件數據
protected $viewpath; //視圖目錄
protected $digg; //用到的插件模型實例
public function __construct() {
parent::__construct();
$this->plugin = $this->model('plugin');
$this->data = $this->plugin->where('dir=?', $this->namespace)->select(false);
if (empty($this->data)) $this->adminMsg('插件尚未安裝', url('admin/plugin'));
if ($this->data['disable']) $this->adminMsg('插件尚未開啟', url('admin/plugin'));
$this->viewpath = SITE_PATH . $this->site['PLUGIN_DIR'] . '/' . $this->data['dir'] . '/views/';
$this->assign(array(
'viewpath' => $this->viewpath,
'pluginid' => $this->data['pluginid'],
));
//以上代碼為固定格式,用戶在開發插件時,可以直接copy。
$this->digg = $this->model('digg'); //實例化用到的模型
}
}
插件控制器公共類用于實例化該插件用到的模型,或者該插件用到的函數等。
(2)、控制器Controller介紹
<?php
class AdminController extends Plugin { //AdminController繼承公共插件類
public function __construct() {
parent::__construct();
//Admin控制器進行登錄驗證
if (!$this->session->is_set('user_id') || !$this->session->get('user_id')) $this->adminMsg('請登錄以后再操作', url('admin/login')); //如果需要管理員登陸驗證,就加上這一句。
}
public function indexAction() {
echo "插件indexAction,歡迎使用FineCMS插件。";
}
}
加載視圖文件和賦值變量與主控制器不同以外,其他規則與Controller一致。
變量賦值:$this->assign(變量名稱, 變量值); $this->assign(支持數組);
加載視圖:$this->display(視圖文件名稱(不帶擴展名));例如:$htis->display('test');//插件目錄/views/test.php
(3)、插件模型models介紹
與系統模型規則一致。
(4)、插件視圖views介紹
只支持原生態PHP語句,不支持模板標簽。
- 后臺管理
- 1.首次進入系統有紅色的提示文字
- 2.欄目管理
- 3.附件管理
- 4.會員投稿流程
- 5.自定義模型使用說明
- 6.表單使用教程
- 7.Ucenter使用說明
- 8.站內搜索參數說明及表單設計
- 9.會員擴展使用教程
- 10數據采集
- 代碼配置管理
- 2.1字段類別說明
- 2.2[靜態/偽靜態]自定義URL
- 2.3網站多語言配置方法
- 2.4后臺管理目錄(admin)更改方法介紹
- 2.5自定義Tag標簽的URL
- 2.6多站點及分站配置
- 2.7欄目自定義字段
- 2.8提交表單郵件通知
- 2.9極驗驗證
- 2.10自定義字段表單調用
- 2.11聯動菜單(linkage)
- 2.12模型選項名稱和選項值
- 2.13自定義編輯器
- 2.14個性化URL結構
- 數據結構與標簽模板設計
- 3.1部分表的數據結構
- 3.2模板設計指南
- 3.3萬能標簽list
- 3.4標簽語法說明
- 3.5系統變量介紹
- 3.6系統函數介紹
- 3.7欄目調用說明
- 3.8SQL語句查詢
- 3.9推薦位調用
- 3.10Tag標簽調用
- 3.11插件開發指南
- 3.12自定義字段類別
- 3.13自定義分頁樣式
- 3.14表單模型和會員擴展模型的回調函數
- 3.15模型回調函數開發