为了方便扩展系统功能和二次开发,使得程序更加的灵活加入了自定义插件机制
插件能够自由的通过钩子实现在不同位置实现相同或者不同的功能。
============《小旋风·泛目录站群》插件开发说明=============
插件目录结构如以下( 以自带的test插件为示范 ):
|-temp | |-addons [所有插件存放的目录] | | |-test [插件目录,小写英文,且不能包含符号] | | | |-template [模板目录,如需载入模板,文件就放此目录下,可有可无] | | | |-config.php [配置文件,可有可无] | | | |-config.html [插件配置模板,可有可无] | | | |-testAddon.class.php [插件主要功能实现文件,文件命名:"插件目录名+Addon.class.php"]
注:所有文件必须 utf8 编码
具体结构以及使用方法,请参考自带插件中的 testAddon.class.php 文件。
可获取的部分系统参数
常量:IS_ROBOT 是否蜘蛛访问
ROBOT_NAME 蜘蛛类型
IS_MIP 当前模板是否MIP模板
IS_MOBILE 是否手机访问
IS_CACHED 是否已缓存页面
CACHE_FILE 缓存页面文件路径
变量:$GLOBALS['thisurl'] 当前页面url地址
$GLOBALS['mulu_url'] 当前目录地址
$GLOBALS['mulu_id'] 当前目录分组ID
$GLOBALS['mulu_dirname'] 当前目录分组文件夹
$GLOBALS['mulu_config'] 当前目录配置
$this->config 当前插件的自定义配置
函数:config(); 获取所有配置
config('xxx'); 获取配置xxx的值
config('web_theme');获取当前模板文件名
config('xxx','xxxx');赋值,xxx可用于模板调用,变量为$xxx,值为xxxx
send_http_status(404); 返回404状态码
为方便大家理解,下面贴出测试插件的代码
class testAddon extends addon{ //插件信息 public $info=array( 'title' => '测试插件', //插件名称 'description' => '测试插件描述', //插件的描述 'author' => '小旋风SEO', //作者 'version' => '1.0', //插件版本 'cms_type'=> 'mulu', //支持的程序类型,泛目录站群为:mulu ,蜘蛛池为:zhizhuchi,多个逗号分隔 ); //设置模板数据,前台模板中调用,模板渲染前执行,修改数组$GLOBALS['return_data'] 即可,$data为当前系统已设置的可调用数据 //注:这里设置的数据并不会写入缓存 public function set_data($data){ //获取toptitle,即对应后台《TKDB调用模板》中的的title模板 $toptitle=$data['toptitle']; //获取当前文章标题 $title=$data['title']; //获取当前文章内容 $body=$data['body']; //获取其他内容...,自行dump(); 输出 //替换当前标题,通常toptitle和title都要替换,因为模板中默认是调用toptitle作为title标签 $toptitle='test_'.$toptitle; $title='test2_'.$title; $GLOBALS['return_data']=array( '调用变量'=>'调用值', 'toptitle'=>$toptitle, 'title'=>$title, 'body'=>$body, ); } //设置修改loop标签的数据,设置 $GLOBALS['return_data'] 的值即可变成新数据 //$args=array($params,$data),其中$params当前loop的参数,$data为数据 public function loop_data($args){ if($args){ return false; } list($params,$data)=$args; $GLOBALS['return_data']=array(); } //设置修改采集的数据,设置 $GLOBALS['return_data'] 的值即可变成新数据,此处值为字符串或者数组 //$args=array($type,$data,$rules),其中$type当前采集的类型,$data为数据,,$rules为当前采集规则 public function collect_data($args){ if(!$args){ return false; } list($type,$data,$rules)=$args; //采集类型为标题,data为数组 if($type=='title'){ } //采集类型为内容,data为字符串 if($type=='body'){ //句子模式 if($rules['split']){ //整篇文章模式 }else{ } } //采集类型为栏目名称,data为数组 if($type=='typename'){ } //采集类型为图片地址,data为数组 if($type=='pic'){ } $GLOBALS['return_data']=''; } //程序最开始时执行 public function before_home(){ //exit('before_home'); } //程序载入基础配置后执行 public function load_home(){ //exit('load_home'); } //页面缓存前执行 public function before_cache(){ } //模板渲染前执行 public function before_show(){ } //模板渲染后执行 public function after_show(){ }}