Discuz后台板块太多,导致Discuz后台板块管理显示板块不完全的解决办法

很多的大型网站使用discuz的由于开了很多的板块导致Discuz后台板块管理显示板块不完全。

显示不完全,可能浏览器有很多的关系,Discuz后台板块太多,导致Discuz后台板块管理显示板块不完全的解决办法是什么呢,

其实咱们可以让他按照大的分区的方式进行显示即可。

后台板块管理的文件是 admincp_forums.php


约46行,有代码 :

$query = C::t('forum_forum')->fetch_all_forum_for_sub_order();


这个就是获取所有板块的数据。其实我们只要通过get方式传递一个大分区的id参数给


fetch_all_forum_for_sub_order();


即可,这样大分区下面的id。


fetch_all_forum_for_sub_order的文件位于:table/table_forum_forum.php


改造后的代码如下:

	public function fetch_all_forum_for_sub_order($gid = 0) {
		//return DB::fetch_all("SELECT ff.*, f.fid, f.type, f.status, f.name,
 f.fup, f.displayorder, f.inheritedmod FROM ".DB::table($this->_table)." f LEFT JOIN
 ".DB::table('forum_forumfield')." ff USING(fid) WHERE f.status<>'3' ORDER BY 
f.type<>'group', f.displayorder");
		
		//代码改造开始 by jincon 2014.10.6  http://www.jincon.com
		$res =  DB::fetch_all("SELECT ff.*, f.fid, f.type, f.status, f.name,
 f.fup, f.displayorder, f.inheritedmod FROM ".DB::table($this->_table)." f LEFT JOIN 
".DB::table('forum_forumfield')." ff USING(fid) WHERE f.status<>'3' ORDER BY 
f.type<>'group', f.displayorder");
		if(!$gid){ 
			return  $res;
		}else{
			$newres = array(); //存入的新数据,
			$gidChild = array(); 
                        foreach($res as $key=>$val){
			if($val['fid']==$gid || $val['fup']==$gid){
				$gidChild[] = $val['fid']; // 必须要先获取fid父				
			}
			}	
			foreach($res as $key=>$val){
			if(in_array($val['fup'],$gidChild) || in_array($val['fid'],$gidChild)){
				$newres[] =$val;					
			}
			}			
		}
		return $newres;
		//end
	}

关键词: bug , discuz

上一篇: 轻量级Linux系统监控与分析工具:Nmon安装和使用教程
下一篇: 使用批处理文件给host文件添加IP和域名

目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):