[tr][td] 规范化的插件开发可以提高插件的可用性,同时还可以避免升级论坛适合导致插件无法使用。本文旨在供插件开发者们参考。
一、插件目录和文件命名的规范 hack根目录下是pw自带的一些插件: 本例假定 插件根目录 hack/test目录 存放插件主要文件,包括在根目录下的文件内容如下: 比如我建立一个test目录结构如下 hack/ 论坛插件根目录 test/ 用户制定目录 template/ 模板目录 image/ 图片目录,强烈建议使用$hkimg变量来制定此目录,这样可以让文件有极大的灵活性 admin.php 插件后台控制文件,如果无此文件,则插件无后台管理功能 index.php 插件前台控制文件,如果不存在,插件不显示前台界面 sql.txt 建表sql语句文件,禁止Drop PHPWind自身数据以及杀出已有数据等危险操作 info.xml 插件名称信息 readme.txt插件使用说明,来提供给用户相关说明的文档 倘若无前台显示/后台设置等,可以没有相应的文件,如果有相应功能,则文件命名必须按照指定规则 。另外,如果插件比较大, 可以把一些常用的函数写成文件放入到hack根目录下的require文件夹 倘若插件比较大,可以把一些常用的函数写成文件放入到require文件夹。 二、缓存文件 出于文件777属性考虑,以及缓存文件的统一部署,建议插件开发者将缓存文件存储为data/bbscache目录下(此目录已经可写,否则无法使用),同时,出于进一步的为插件使用者着想,建议缓存文件使用程序生成,来避免第一次使用插件时,因为没有缓存文件或者缓存文件不可写而导致的错误--我们必须考虑到,部分用户不熟悉电脑操作,并不了解如何设置文件777属性,所以建议并不附带默认的缓存文件,而默认的缓存文件,在插件使用者第一次使用的时候,自动生成到data/bbscache目录下,这样将避免插件安装中频繁出现的777问题。[备注提示:一般附带缓存的文件,可内置某些默认值,然后插件完成安装之后,使用者应该进行一次设置提交来保存它所需要的设置,在这个时候设置再生成缓存文件到data/bbscache目录下一个缓存文件,能够有效的避免需要设置777的问题] 三、插件专用常量/变量 可以参考论坛根目录hack.php,hack.php是所有插件的入口文件: 1) H_P 插件根目录,用途相当于R_P等常量,为插件专用。R_P."index.php"为论坛根目录下的index.php,H_P."index.php",即指当前插件目录下的index.php文件 2) $basename 插件主文件,程序中任何需要引用到自身的可以用此变量代替。 3) $hkimg 插件图片目录,插件所使用的图片存放路径,相对路径为 /BBS根目录/Hack目录/插件目录/image目录,此变量的目的在于使得插件目录更灵活,在文件中引用图片路径更简单。 以上内容将为插件的目录结构,插件的程序开发提供极大的灵活性,我们倘若修改了名称或者唯一ID之后,唯一需要做的只是修改一下FTP上文件夹的名称跟唯一ID保持一致即可。 四、插件相关主要函数 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"); 五、写在最后的建议 1) 不使用默认的getdate函数获取日期,而使用get_date函数(PW系统自带),这样将能够保持跟系统时间保持一致(PW后台的时间校正,时区等设置将会生效)。 2) 推荐使用include函数包含缓存文件,因为require可能缺少文件而产生一个致命错误--空白,而Include函数则不会有致命错误的产生。 3)为了避免PHPWind程序/补丁更新而导致的文件变动,建议插件开发者按照本参考标准开发插件,并尽可能避免修改论坛自身文件,以避免倘若论坛升级之后插件全部失效。另外,插件的数据建议尽可能采用新的数据表,而不要改动原有的数据表,这样也可以有效地避免升级论坛程序而导致的论坛插件数据丢失。对于新建立的插件数据表,建议使用pw_hack_xxx格式来建立,便于区分。</strong> [/td][/tr] |
|
沙发#
发布于:2015-07-18 12:30
O(∩_∩)O谢谢
|
|
|