###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模型回调函数开发