为了方便扩展蜘蛛池系统功能和二次开发,使得程序更加的灵活加入了自定义插件机制。
插件能够自由的通过钩子实现在不同位置实现相同或者不同的功能。
下面就是万能蜘蛛池的插件开发说明:
============《小旋风·万能蜘蛛池》插件开发说明=============
插件目录结构如以下( 以自带的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[\'domain_id\'] 当前网站分组ID
$GLOBALS[\'domain_cid\'] 当前网站所属模型ID
$GLOBALS[\'domain_dirname\'] 当前网站分组文件夹
$GLOBALS[\'domain_config\'] 当前网站分组配置
$GLOBALS[\'arctype_config\'] 当前网站所属模型配置
$GLOBALS[\'arctype_dirname\'] 当前模型文件夹
$GLOBALS[\'reform_config\'] 当前网站优化配置
$GLOBALS[\'html\'] 网页html,供before_show钩子调用和修改
$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\'=> \'zhizhuchi\', //支持的程序类型,蜘蛛池为:zhizhuchi,泛目录站群为:mulu 多个逗号分隔
);
//设置修改模板数据,前台模板中调用,模板渲染前执行,修改数组$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(){
}
}























