本插件功能,主要就是为论坛多增加一个分配节点。
附上演示图:演示站点
http://dz.llgoo.com/bbs.php
由于修改过程比较复杂,且关联性也复杂,因此这里就不描述详细的过程了。
附件下载
文件修改:
./forumdisplay.php
./admin/forums.inc.php
./admin/global.func.php
./include/cache.func.php
./include/forum.func.php
./include/newreply.inc.php
./include/newthread.inc.php
./include/newtrade.inc.php
如果你开启了左右分栏,则还要改
./leftmenu.php
数据库修改:增加字段
复制内容到剪贴板
代码:
alter table cdb_forums add column sub3 tinyint (6) UNSIGNED DEFAULT '0' NOT NULL after simple;开始修改
一、./forumdisplay.php
1、找到
复制内容到剪贴板
代码:
if($forum['type'] == 'forum') {
...} else {
...}修改成
复制内容到剪贴板
代码:
if($forum['type'] == 'forum') {
$navigation = "» $forum[name]";
$navtitle = strip_tags($forum['name']);
} else {
$forumup = $_DCACHE['forums'][$forum['fup']]['name'];
$navigation = "» $forumup";
$navtitle = strip_tags($forum['name']).' - '.strip_tags($forumup);
if ($_DCACHE['forums'][$forum['sub3']]['name']) {
$forumup = $_DCACHE['forums'][$forum['sub3']]['name'];
$forumupid = $_DCACHE['forums'][$forum['sub3']]['fid'];
$navigation = $navigation."» $forumup";
$navtitle = $navtitle." - ".strip_tags($forumup);
}
$navigation = $navigation." » $forum[name]";
}2、找到
复制内容到剪贴板
代码:
foreach($_DCACHE['forums'] as $sub) {
...}换成
复制内容到剪贴板
代码:
foreach($_DCACHE['forums'] as $sub) {
if($sub['type'] == 'sub' && ($sub['fup'] == $fid || $sub['sub3'] == $fid) && (!$hideprivate || !$sub['viewperm'] || forumperm($sub['viewperm']) || strstr($sub['users'], "\t$discuz_uid\t"))) {
$subexists = 1;
$sublist = array();
if ($sub['sub3'] == '0') {
$sql = "select f.sub3 fid,sum(f.threads) threads,sum(f.posts) posts,sum(f.todayposts) todayposts from {$tablepre}forums f where ";
$sql = $sql."f.sub3>0 AND f.fup='$sub[fup]' group by f.sub3";
$query = $db->query($sql);
//echo $sql;
while($forumsub = $db->fetch_array($query)) {
$forumsublist[$forumsub['fid']]['fid']=$forumsub['fid'];
$forumsublist[$forumsub['fid']]['threads']=$forumsub['threads'];
$forumsublist[$forumsub['fid']]['posts']=$forumsub['posts'];
$forumsublist[$forumsub['fid']]['todayposts']=$forumsub['todayposts'];
}
}
$sql = $accessmasks ? "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, ff.description, ff.moderators, ff.icon, ff.viewperm, a.allowview FROM {$tablepre}forums f
LEFT JOIN {$tablepre}forumfields ff ON ff.fid=f.fid
LEFT JOIN {$tablepre}access a ON a.uid='$discuz_uid' AND a.fid=f.fid
WHERE ".($sub[sub3]=='0' ? 'fup='.$fid.'' : 'fup='.$sub[fup].'')." AND status>0 AND type='sub' AND ".($sub[sub3]=='0' ? 'sub3=0' : 'sub3='.$sub[sub3].'')." ORDER BY f.displayorder"
: "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, ff.description, ff.moderators, ff.icon, ff.viewperm FROM {$tablepre}forums f
LEFT JOIN {$tablepre}forumfields ff USING(fid)
WHERE ".($sub[sub3]=='0' ? 'fup='.$fid.'' : 'fup='.$sub[fup].'')." AND ".($sub[sub3]=='0' ? 'sub3=0' : 'sub3='.$sub[sub3].'')." AND f.status>0 AND f.type='sub' ORDER BY f.displayorder";
//echo $sql;
$query = $db->query($sql);
while($sub = $db->fetch_array($query)) {
if(forum($sub)) {
$sub['orderid'] = count($sublist);
if($sub['fid'] == $forumsublist[$sub['fid']]['fid']) {
$sub['threads'] = $sub['threads']+$forumsublist[$sub['fid']]['threads'];
$sub['posts'] = $sub['posts']+$forumsublist[$sub['fid']]['posts'];
$sub['todayposts'] = $sub['todayposts']+$forumsublist[$sub['fid']]['todayposts'];
}
$sublist[] = $sub;
}
}
break;
}
}二、./admin/forums.inc.php
此文件修改的比较多,但是该文件一般都不要修改,可以直接覆盖,如果你曾经改过这个文件,以后再写详细方法。
三、./admin/global.func.php
找到
复制内容到剪贴板
代码:
function showforum($key, $type = '') {
....}替换成
复制内容到剪贴板
代码:
function showforum($key, $type = '') {
global $forums, $showedforums, $lang, $indexname;
$forum = $forums[$key];
$showedforums[] = $key;
return ''.$forum['name'].''.
($forum['status'] ? '' : ' ('.$lang['forums_hidden'].')').' - '.
$lang['display_order'].': - '.
($type == 'sub' ? '['.$lang['forums_add'].'] ' : $type != 'sub3' ? '['.$lang['forums_add'].'] ' : '').
'['.$lang['edit'].']'.
($type != 'group' ? ' ['.$lang['forums_copy'].'] ' : ' ').
'['.$lang['delete'].'] - '.
'['.$lang['forums_moderators'].($forum['moderators'] ? ': '.str_replace("\t", ', ', $forum['inheritedmod'] ? ''.$forum['moderators'].'' : $forum['moderators']) : '').']'.
'
';
}四、./include/cache.func.php
改的比较多,建议覆盖,原有修改过的不要覆盖
四、./include/forum.func.php
找到
复制内容到剪贴板
代码:
function forumselect($groupselectable = FALSE, $tableformat = 0) {
...
}替换成
复制内容到剪贴板
代码:
global $_DCACHE, $discuz_uid, $groupid, $fid, $gid, $indexname;
if(!isset($_DCACHE['forums'])) {
require_once DISCUZ_ROOT.'./forumdata/cache/cache_forums.php';
}
$forumlist = $tableformat ? '' : '';
foreach($_DCACHE['forums'] as $forum) {
if($forum['type'] == 'group') {
if($tableformat) {
$forumlist .= ''.$forum['name'].'';
} else {
$forumlist .= $groupselectable ? ''.$forum['name'].'' : '';
}
$visible[$forum['fid']] = true;
} elseif($forum['type'] == 'forum' && isset($visible[$forum['fup']]) && (!$forum['viewperm'] || ($forum['viewperm'] && forumperm($forum['viewperm'])) || strstr($forum['users'], "\t$discuz_uid\t"))) {
if($tableformat) {
$forumlist .= ''.$forum['name'].'';
} else {
$forumlist .= ' > '.$forum['name'].'';
}
$visible[$forum['fid']] = true;
} elseif($forum['type'] == 'sub' && $forum['sub3'] == '0' && isset($visible[$forum['fup']]) && (!$forum['viewperm'] || ($forum['viewperm'] && forumperm($forum['viewperm'])) || strstr($forum['users'], "\t$discuz_uid\t"))) {
if($tableformat) {
$forumlist .= ''.$forum['name'].'';
} else {
$forumlist .= ' > '.$forum['name'].'';
}
$visible[$forum['fid']] = true;
} elseif($forum['type'] == 'sub' && $forum['sub3'] > '0' && isset($visible[$forum['fup']]) && (!$forum['viewperm'] || ($forum['viewperm'] && forumperm($forum['viewperm'])) || strstr($forum['users'], "\t$discuz_uid\t"))) {
if($tableformat) {
$forumlist .= ''.$forum['name'].'';
} else {
$forumlist .= ' > '.$forum['name'].'';
}
}
}
$forumlist .= $tableformat ? '' : '';
$forumlist = str_replace($tableformat ? '' : '', '', $forumlist);
return $forumlist;
}五、./include/newreply.inc.php newthread.inc.php newtrade.inc.php
找到
复制内容到剪贴板
代码:
if($forum['type'] == 'sub') {
...
}替换成
复制内容到剪贴板
代码:
if($forum['type'] == 'sub') {
$db->query("UPDATE {$tablepre}forums SET lastpost='$lastpost' WHERE fid='$forum[fup]'", 'UNBUFFERED');
$db->query("UPDATE {$tablepre}forums SET lastpost='$lastpost' WHERE fid='$forum[sub3]'", 'UNBUFFERED');
}[
本帖最后由 wjmwaq 于 2008-3-17 09:14 编辑 ]