广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 25782 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
月光 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
社区建设奖
头衔:看我代替月亮惩罚你!看我代替月亮惩罚你!
版主
级别: 版主 该用户目前不上站
版区: Unix-like, 网站架设
推文 x42 鲜花 x565
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[程式] 5.X 插件开发手册/附旧版插件升级方法
20061019版本 PHPWind官方团队
为统一插件开发规范,促进PHPWind论坛程序的插件开发,以及提高广大PHPWind用户安装插件更加简易,同时尽量避免升级论坛程序而带来的插件失效,特撰写本开发手册,供插件开发者参考,以及给有兴趣开发插件的朋友们提供帮助。使用本规则,将会
避免当前插件体系所能导致的所有常见低级错误:前台文件后台文件填写颠倒,不知道如何执行SQL,不知道如何设置文件777属性,
因为没有默认的缓存文件而导致的空白错误。

一、   插件专用常量/变量/函数:


1)   H_P
  插件根目录,用途相当于R_P等常量,为插件专用。R_P."index.php"为论坛根目录下的index.php,H_P."index.php",即指当前插件目录下的index.php文件
2)   $basename
插件主文件,程序中任何需要引用到自身的可以用此变量代替。
3)   $hkimg
  插件图片目录,插件所使用的图片存放路径,相对路径为 /BBS根目录/Hack目录/插件目录/image目录,此变量的目的在于使得插件目录更灵活,在文件中引用图片路径更简单。
4)   PrintHack
得到模板文件路径,区别于默认的PrintEot
以上内容将为插件的目录结构,插件的程序开发提供极大的灵活性,我们倘若修改了名称或者唯一ID之后,唯一需要做的只是修改一下FTP上文件夹的名称跟唯一ID保持一致即可。备注:PHP程序忽略变量以及函数的大小写,如果本文列举的内容大小写跟实际存在出入,可以不予考虑。

二、   插件目录结构,以及文件名约定规则:


举例插件名称为打工插件,唯一ID为work,那么插件的文件夹名称应该跟唯一ID保持一致,其所有文件应该存放在 hack/work目录下,以下内容将以此插件为例说明。
1)   插件根目录 hack/work目录
存放插件主要文件,包括在根目录下的文件内容如下:
a)   index.php 插件前台主文件,如果不存在此文件,插件则不显示前台界面。
b)   admin.php 插件后台主文件,如果不存在此文件,插件则无后台管理功能。
c)   sql.txt 插件安装所需要执行的SQL语句,禁止Drop PHPWind自身数据以及删除已有数据等危险操作。如果不需要执行SQL语句变动数据库,可以不存在此文件。
d)   readme.txt 插件使用说明,来提供给用户相关说明文档。
e)   倘若无前台显示/后台设置等,可以没有相应的文件,如果有相应功能,则文件命名必须按照指定规则。
2)   图片目录 hack/work/image
此目录存放插件文件中所使用到的图片文件,强烈要求在文件中使用$hkimg变量来指定此目录,这样指定目录将会让文件有极大的灵活性。
3)   插件包含文件 hack/work/require
倘若插件比较大,可以把一些常用的函数写成文件放入到require文件夹。
4)   插件模板文件夹 hack/work/template
不同于5.0之前的版本,所有模板均放置到template下,前台放置于template/wind 后台放置于template/admin,而现有的插件体系规定所有的插件模板均放置在这一个目录下,不再需要分别放到两个文件夹中。
5)   缓存文件
出于文件777属性考虑,以及缓存文件的统一部署,建议插件开发者将缓存文件存储为data/bbscache 目录下(此目录已经可写,否则无法使用), 同时,出于进一步的为插件使用者着想,建议缓存文件使用程序生成,来避免第一次使用插件时,因为没有缓存文件或者缓存文件不可写而导致的错误--我们必须考虑到,部分用户不熟悉电脑操作,并不了解如何设置文件777属性,所以建议并不附带默认的缓存文件,而默认的缓存文件,在插件使用者第一次使用的时候,自动生成到data/bbscache目录下,这样将避免插件安装中频繁出现的777问题。[备注提示:一般附带缓存的文件,可内置某些默认值,然后插件完成安装之后,使用者应该进行一次设置提交来保存它所需要的设置,在这个时候设置再生成缓存文件到data/bbscache目录下一个缓存文件,能够有效的避免需要设置777的问题]

三、   旧版本插件升级方法


按照标准的格式开发安装的插件--通过论坛管理后台添加的插件,需要进行一定修改。旧有用户升级需要对原有插件的文件布局做较小的改动。插件作者倘若发布新版本插件,建议采用新的开发方法。
而旧版本插件--仅仅指按照标准方法开发的插件,通过论坛后台添加的。需要进行如下三个地方的修改,
非常简单:
1)
  首先按照插件的唯一ID建立一个文件夹在hack目录下,比如插件唯一ID为work,那么则需要在Hack目录下添加一个目录为work目录,即为hack/work目录。
2)
  然后把插件前台文件改名为index.php,后台文件改名为admin.php(如果存在前台或者后台文件的话)
3)
  把改名之后的文件放入到刚刚建立的相应目录中去,比如work目录
4)
  完成。其他部分均不需要修改。

四、   主要相关函数


1)   Refreshto [前台文件相关]

函数可在执行某操作之后,将页面跳转到指定的网址,附带三个参数,第一个参数为跳转的网址,第二个参数为跳转过程中提示的内容,第三个参数为跳转页面停留的时间。前两个参数必须,第三个参数可选。举例为:
refreshto("thread.php?fid=9","您的操作已成功");
2)   Showmsg [前台文件相关]

函数一般用来返回某错误信息,并终止程序的下一步操作,继而供用户返回前一页面。本函数只有一个参数,即犯错的错误提示内容。举例为:
Showmsg("您无权访问本页面");
3)   Writeover [前台后台通用]
文件写函数,本函数将指定的字符串信息写入到指定的文件中去,有两个必选参数,第一个是文件名,第二个是字符串内容。举例为:
$str="abcdefg";
writeover(D_P."data/bbscache/aa.php",$str);
4)   Char_cv [前台后台通用]
对于POST等方法传递过来的变量内容,推荐使用本函数进行处理,本函数将过滤字符串中的危险内容。提高安全性。本函数举例如下:
$str=Char_cv($str);
5)   PrintHack [前台后台通用]
函数为插件专用,用来返回一个模板的路径,作为require/include等函数的参数传递。只有两个参数,第一个为模板文件的主文件名,该参数必须,第二个参数为模板文件的扩展名(后坠),该参数可选,默认为htm。举例为:
require PrintHack("info"); 包含插件目录下的template目录下的info.htm文件。倘若要包含info.html文件,则应该为require PrintHack("info","html");
6)   Adminmsg [后台文件使用]
函数主要用于在后台操作时返回某个提示信息,函数有三个参数,第一个参数必选,为返回的信息内容,第二个参数为可选,不带此参数程序将自动返回操作前的页面,带此参数则跳转到该参数指定的页面,第三个参数为跳转页面停留时间。举例如下:
adminmsg("系统设置成功");
adminmsg("备份成功,现在继续备份下一个文件", "backup.php?step=2");
7)   Get_date [前台后台通用]
本函数用来格式化时间,包含两个参数,前者为一个10位的Unix时间戳,后者为时间的格式,后者为可选参数。建议使用本函数来格式化一个时间,在没有第二个格式参数的时候,将按照默认的年-月-日 小时:分:秒的格式来处理。
8)   PCV [前后台通用]
本函数为5.0版本新增函数,倘若您所要包含的文件中含有变量,要被包含文件使用到--b.php为被包含文件,a.php为包含文件,a.php需要包含b.php来获取某个变量的值--建议使用本函数来过滤b.php文件,来防止跨站攻击等,本函数的使用可以进一步提高安全性。举例说明:
include_once Pcv("xxxxx.php");

五、   PHP开发建议


1)
  不使用默认的getdate函数获取日期,而使用get_date函数(PW系统自带),这样将能够保持跟系统时间保持一致(PW后台的时间校正,时区等设置将会生效)。
2)
  推荐使用include函数包含缓存文件,因为require可能缺少文件而产生一个致命错误--空白,而Include函数则不会有致命错误的产生。

六、   其他相关建议


为了避免PHPWind程序/补丁更新而导致的文件变动,建议插件开发者按照本参考标准开发插件,并尽可能避免修改论坛自身文件,以避免倘若论坛升级之后插件全部失效。另外,插件的数据建议尽可能采用新的数据表,而不要改动原有的数据表,这样也可以有效地避免升级论坛程序而导致的论坛插件数据丢失。对于新建立的插件数据表,建议使用pw_hack_xxx格式来建立,便于区分。


七、   插件开发实例


请参考PHPWind程序中的系统自带插件参考其中的具体写法。相关函数内容请参考admin/admincp.php global.php 常用的系统函数均在这两个文件之内。



月光论坛
http://bbs.dj...com/


===================================
赞助本站 -- 刊登广告 -- 物超所值虚拟主机租用
献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2006-10-26 04:43 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.063104 second(s),query:15 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言