昨日宝塔群内一朋友想对宝塔面板二开,想要做一个网站搜索功能,方便在众多网站列表中快速找出来。宝塔底层是由python驱动(Linux版),在新版本的更新迭代中源码基本也都开放出来了,虽然没有出二开手册,但也算是默认开源了吧。研究了一番,源码还是很明了的,修改一番实现宝塔面板的网站搜索功能。

一.暗中摸索

1.打开网站分类的面板后默认会请求一次网站列表的读取的接口:

QQ截图20180313112817.png

二.顺藤摸瓜

找到模板目录下的site.html
模板文件录:/www/server/panel/templates/default/
在50多行处发现请求获取网站列表数据的方法:

QQ截图20180313113151.png

经过捕获,获取网站数据列表的方法在代码在/www/server/panel/static/js/site.js中

QQ截图20180313113452.png

我们可以看到其实宝塔面板是有搜索功能的,只不过每次读取网站列表(ajax)的时候默认为空,也就是搜索全部。这个表单在site.html是隐藏的。由此分析请求数据列表的url:/data?action=getData,我们来到/www/server/panel/class/data.py中

QQ截图20180313114307.png

最终获取数据的源头,以json格式返回

三.画龙点睛

回到我们的site.html文件中,在22行处插入以下代码:

网站筛选: 
<input id="search" name="search" class="inputtxt bt-input-text" type="text" placeholder="输入筛选目标网站">
<button onclick='getWeb(1,$$("#search").prop("value"))' class="btn btn-success btn-sm btn-title" type="button">搜索</button>

继续到site.js中,找到getWeb()方法:

search = $("#SearchValue").prop("value");
替换成
search = $("#search").prop("value");

四.滴水穿石

回到宝塔面板的首页,重启面板

QQ截图20180313115150.png

再回到网站面板,即可根据网站域名或者备注搜索自己需要找的网站了!(可能浏览器会有缓存,记得多强刷几次。)

QQ截图20180313115331.png

最后修改:2019 年 04 月 15 日 02 : 17 PM