解析phpwind的插件体系

看phpwind的官方网站,发现有个很重要版块为“phpwind 插件开发”,第一感觉是phpwind有个很完善的插件体系,吸引开发者来基于插件体系进行二次开发。于是乎我饶有兴趣地解析一下phpwind的插件体系的实现。我先说说在我看来插件体现比较重要的两个特征:

  • 插件维护体系
  • 插件能插入的粒度

对于第一个特征phpwind体现得还不错,在后台有个专门的栏目是管理插件,能够对放在hack目录下的插件进行安装和卸载,而插件本身的属性(info.xml)、管理界面(admin.php)、功能界面(index.php)就需要在插件子目录下进行专门的开发,只需要按照规定的文件名进行命名就行,一个典型的插件目录结构如下图所示:

其实phpwind的插件管理功能实现很简单,也就是分析hack目录下所有子文件夹的目录结构,解析出所有插件,界面上显示的插件名称来自于各个插件目录下的info.xml,而对每个插件的管理配置都是各个插件目录下admin.php,插件的各个属性有个类似于key-value的名字为hack的表来存储。

但对于第二个特征,phpwind就做得很粗,对于用户自定义的插件,phpwind只提供整个插件通过url的访问,而不能把插件插到既有的功能流程中去。官方提供的插件“评价”可以插入到发帖等既有流程中,但实现的方式确是在“read.php”源代码里硬生生的加入了对评价的支持,如:

[php]  view plain copy
  1. //评价功能开启  
  2. $rateSets = unserialize($db_ratepower);  
  3. if(!$forumset['rate'] && $rateSets[1] && isset($db_hackdb['rate'])){  
  4.     list($noAjax,$objectid,$typeid,$elementid) = array(TRUE,$tid,1,'vote_box');  
  5.     require_once R_P . 'hack/rate/index.php';  
  6. }  
 

因此想通过插件的方式来改造既有功能就无门了。对于自制的插件,phpwind只能通过root_url/hack.php?H_name=plugin_name,看hack.php的源码,发现实现非常简单,仅仅就是通过plugin_name把插件目录下的index.php require进来,源码如下:

[php]  view plain copy
  1. define('SCR','hack');  
  2. if(isset($_GET['action']) && $_GET['action'] == 'ajax'){  
  3.     define('AJAX','1');  
  4. }  
  5. require_once('global.php');  
  6. InitGP(array('H_name'));  
  7. if (preg_match('/^http/i',$H_name)) {  
  8.     Showmsg($H_name);  
  9. elseif(!$db_hackdb[$H_name] || !is_dir(R_P.'hack/'.$H_name) || !file_exists(R_P."hack/$H_name/index.php")){  
  10.     Showmsg('hack_error');  
  11. }  
  12. define('H_P',R_P."hack/$H_name/");  
  13. $basename   = "hack.php?H_name=$H_name";  
  14. $hkimg      = "hack/$H_name/image";  
  15. $forumtitle = strip_tags($db_hackdb[$H_name][0]).' ';  
  16. if (!defined('AJAX')) {  
  17.     require_once(R_P.'require/header.php');  
  18. }  
  19. require_once(H_P.'index.php');  
 

因此,只能说phpwind的插件体系是个很简陋的玩意,只是简单的帮你管理一下你自己的代码,让它从目录结构上表现得规矩一点,如果真的希望通过用户开发插件来加强或定制已存在的功能,就需要深入到各个主要功能流程中,在流程的各个环节加入插入点,让用户的自定义插件能真正深入其中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一步:此包解压覆盖根目录.rar 第二步:参考设置如下: 1、首页N格使用,进入后台--在论坛模式--内容推送--将首页四格关闭; 2、每日发帖奖励guerdon.php文件,后台计划任务调用文件名设置:guerdon.php 3、LED电子广告屏使用,在此包解压覆盖根目录.rar中的ledtu1.html文件修改滚动广告字幕,还需要在后台添加广告代码如下: LED电子屏 4、QQ互联插件参照官方安装: (A、QQ互联插件:PW87QQ互联.rar解压到根目录下 (B、http://您的网站地址/hack/qqconnect/install/安装 (C、后台设置并启用 5、增加了:“214”粉红情侣风格模版,在后台模式: 论坛模式——风格模版——风格列表——开启默认——提交即可 6、所有打包插件说明如下: QQ互联插件:PW87QQ互联.rar ==============以下是hack插件文件夹================ 特殊组VIP卡/积分充值卡:vipcardcenter 修改UID起始号码:un01_modifyuid 关键词自动加链接:keywordlink【需要修改根目录下的read.php目前已经修改好,覆盖即可,修改参考:关键词自动加链接修改方法.txt】 靓号商城:selluid QQ群管理:qqqun 酷狗音乐:kugou 百度新闻:nes 百度帖吧:tieba 56视频上传:open56 宣传中心宣传中心:adv 版主申请:apply 心情签到奖励:xqqiandao 蜘蛛记录:sprecord 【需要修改根目录下的global.php目前已经修改好,覆盖即可】 积分兑奖:credit 个人资料美化:grzl 虚拟在线:xuni 数据采集:xkcj 万年历:wnl 电话114:tel 【参考:电话114插件安装使用方法.txt】 ================================================== 咨询QQ:773433432 欢迎广大朋友站长到社区论坛分享资源和交流:http://www.love9mai.com/phpwind

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值