
第一:先在整站hack目录下新建一个插件目录,这里举例为hack_folder:
第二:在 hack_folder 目录下建立相关的文件:
data.sql就是写入到插件数据表的数据文件,同时也是系统自动识别和自动安装的钩子;
install.php来编写安装插件后相关的初始设置;
fix.php来编写插件的初始设置:(0=可选安装,1=默认安装,2=强制安装)
如果需要在前台导航菜单里自动显示,请用这样的代码来实现:
if(!$db->get_one("SELECT * FROM `{$pre}menu` WHERE linkurl='do/hack.php?hack=你的插件目录名'") ) //添加前台头部导航菜单
{
$db->query("
INSERT INTO `{$pre}menu` (
`id` ,
`fid` ,
`name` ,
`linkurl` ,
`color` ,
`target` ,
`moduleid` ,
`type` ,
`hide` ,
`list`
)
VALUES (
NULL , '0', '插件名称', 'do/hack.php?hack=你的插件目录名'', '', '0', '0', '0', '0', '0'
)
");
}
menu_cache();
function menu_cache(){
global $db,$pre;
$query = $db->query("SELECT * FROM {$pre}menu WHERE moduleid=0 AND AND hide=0 AND fid=0 ORDER BY list DESC");
while($rs = $db->fetch_array($query)){
$array[]="$rs[name]|$rs[linkurl]|$rs[target]|$rs[color]|$rs[id]";
$query2 = $db->query("SELECT * FROM {$pre}menu WHERE moduleid=0 AND AND hide=0 AND fid='$rs[id]' ORDER BY list DESC");
while($rs2 = $db->fetch_array($query2)){
$show.="\r\n\$MenuArray[$rs[id]][]='".addslashes("$rs2[name]|$rs2[linkurl]|$rs2[target]|$rs2[color]|$rs2[id]")."';";
}
}
$webdbs[guide_word]=implode("\r\n",$array);
write_config_cache($webdbs);
}
admin.php来编写后台对这插件的管理操作;
member.php来编写会员中心对这插件的管理操作;
member_menu.php来编写会员中心对这插件管理连接;相关写法可如下:
return array(
'name'=>'插件名称',
'url'=>'hack.php?hack=hack_folder&job=list'
);
index.php来编写前台对这插件的显示;
文件夹template是存放插件需要的模板文件,这里又再分前台,后台和会员中心:
template/ 是存放后台管理需要的模板文件;
template/index 是存放前台需要的模板文件;
template/member 是存放会员中心需要的模板文件;
文件夹images是存放插件需要的图片文件,这里又再分前台,后台和会员中心:
images/ 是存放后台管理需要的图片文件;
images/index 是存放前台需要的图片文件;
images/member 是存放会员中心需要的图片文件;
有关插件模板名的定义,官方推荐用以下定义来编写:
list.htm (列表)
set.htm (设置)
mod.htm (修改)
add.htm (添加)
menu.htm (菜单)
在调用这些模板文件,可用模板识别函数:hack_admin_tpl(模板名):
示范:hack_admin_tpl('list');
图中我用黄色水印表示这插件的管理地址:index.php?lfj=hack_folder&job=list
开头的 index.php 是表示后台管理插件路径的统一方式;
后面的 lfj=hack_folder 就表示你当前插件目录名,这里已用下划蓝色做了区别;
最后的 job=list 就是当前对插件的管理操作,也就是后台点击插件管理时候的第一界面,其变量取决该插件的构造而定,一般默认都为list,这里已用下划红色做了区别;
而有关job变量的定义,官方推荐用以下定义来编写:
$job=="list" (列表) list一般都为插件管理路径的默认值,也有部分插件会是set,情况因插件不同构造而定,list就是表示查看完整的数据列表
$job=="set" (设置) 一般在设置后都会跟上一个$action=="set" 前者是开始提取数据,后者是结束写入数据
$job=="mod" (修改) 一般在修改后都会跟上一个$action=="mod" 前者是开始提取数据,后者是结束写入数据
$job=="add" (添加) 一般在添加后都会跟上一个$action=="add" 前者是开始提取数据,后者是结束写入数据
还有一个变量就是删除,由于删除是属于结束写入数据的那种,所以直接定义为$action=="delete"
最后是插件操作的权限配置,也就是这里用黑色圈出的插件关键字,这也是插件唯一认证的地方,所以不同的插件都会用到不同的关键字,这是为了起到最大的安全效率;
插件操作也就是说在每次操作后都要加上这个关键字变量,也就是$Apower[hack_keywords]
举例:$job=="list"&&$Apower[hack_keywords]
$job=="set"&&$Apower[hack_keywords]
$action=="delete"&&$Apower[hack_keywords]
第三:把插件相关的应用连接写入到插件管理数据表中(data.sql),如:
#
# 转存表中的数据 `qb_hack
#
INSERT INTO `qb_hack` (
`keywords` ,
`name` ,
`isclose` ,
`author` ,
`config` ,
`htmlcode` ,
`hackfile` ,
`hacksqltable` ,
`adminurl` ,
`about` ,
`class1` ,
`class2` ,
`list` ,
`linkname` ,
`isbiz`
)
VALUES (
'hack_keywords',
'测试测试',
'0',
'lisheng51',
'', '', '', '',
'index.php?lfj=hack_folder&job=list',
'test for a hack',
'other',
'其它功能',
'0',
'',
'0'
);
第四:以上操作完毕,保存后新插件就会出现在自动安装界面下。