xiunoBBS 后台插件排序方法--启用的排前面

2020-10-22 14:09:48 +08:00
 xinyana

xiunoBBS 后台插件默认是按照插件路径排序,也可以理解为按照插件作者(英文缩写)排序

但是后台看起来就有点乱,找自己启用的插件要翻老半天

先上排序后的效果,有没有变清爽:

排序方法

这个效果功能懒得开发成插件,而且几乎为必备修改,直接改源码

将文件/model/plugin.func.php第 53 行的plugin_init()函数修改为以下代码,同时增加函数array_sort()即可,完整代码如下:

// 在安装、卸载插件的时候,需要先初始化
function plugin_init() {
	global $plugin_srcfiles, $plugin_paths, $plugins, $official_plugins;
	$plugin_paths = glob(APP_PATH.'plugin/*', GLOB_ONLYDIR);
	if(is_array($plugin_paths)) {
		foreach($plugin_paths as $path) {
			$dir = file_name($path);
			$conffile = $path."/conf.json";
			if(!is_file($conffile)) continue;
			$arr = xn_json_decode(file_get_contents($conffile));
			if(empty($arr)) continue;
			$plugins[$dir] = $arr;
			
			// 额外的信息
			$plugins[$dir]['hooks'] = array();
			$hookpaths = glob(APP_PATH."plugin/$dir/hook/*.*"); // path
			if(is_array($hookpaths)) {
				foreach($hookpaths as $hookpath) {
					$hookname = file_name($hookpath);
					$plugins[$dir]['hooks'][$hookname] = $hookpath;
				}
			}
			
			// 本地 + 线上数据
			$plugins[$dir] = plugin_read_by_dir($dir);
		}
		//插件排序,依赖于自定义函数 array_sort()
		$plugins = array_sort($plugins,'installed','desc');
		$plugins = array_sort($plugins,'enable','desc');
		
	}
}

//二维数组排序
function array_sort($arr,$keys,$type='asc'){ 
	$keysvalue = $new_array = array();
	foreach ($arr as $k=>$v){
		$keysvalue[$k] = $v[$keys];
	}
	if($type == 'asc'){
		asort($keysvalue);
	}else{
		arsort($keysvalue);
	}
	reset($keysvalue);
	foreach ($keysvalue as $k=>$v){
		$new_array[$k] = $arr[$k];
	}
	return $new_array; 
} 

转发自: https://www.gezhong.vip/thread-29.htm

630 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717440

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX