繁體版
作 者:
alan888
D6.1修改: EricB
適用版本: Discuz 6.1.0
修改文件: index.php, logging.php, topicadmin.php, include/newthread.inc.php, include/newreply.inc.php, include/editpost.inc.php, include/counter.inc.php, include/cache.func.php, discuz 模板, css_append 模板
加入文件: foruminfo 模板 (附件 1)
演 示:
http://ericb.coms.hk/index.php?indexfour=2
免安裝版只適合新裝論壇。
有Error就試下#83既方法
安裝程序
1. 修改 include/cache.func.php
修改完成此文件後請即時到後台 -> 更新緩存
找
'medals' => array('medals'),
更換為
'medals' => array('medals'),
'newtopic' => array('newtopic'),
'newreply' => array('newreply'),
'todaynewmems' => array('todaynewmems'),
'todayvisit' => array('todayvisit'),
再找
case 'medals':
$table = 'medals';
$cols = 'medalid, name, image';
$conditions = "WHERE available='1'";
break;
在下面加上
(注意先填妥紅字部份)
填上不需要顯示帖子區域
由於使用快取檔型式, 故某些私密區不能判斷會員權限來顯示發帖及回帖, 所以要先修改及取代下紅字部份 "填上
不需要顯示帖子區域的 fid 編號, 以逗號作分格, 最後一個不用加上逗號" 部份, 例如希望不顯示 fid 1,3,5 便填上 "$fids="1,3,5";"
如果希望全部顯示者, 請將下兩段的
NOT IN ($fids) (藍色字顯示部份)刪除, 否則會出現數據錯誤的顯示
case 'newtopic':
$table = 'threads t, '.$tablepre.'forums f';
$cols = "t.tid, t.subject, t.author, t.dateline, t.views, t.replies, t.lastpost, t.lastposter, t.highlight, f.name";
$fids="填上不需要顯示發新帖區域的 fid 編號, 以逗號作分格, 最後一個不用加上逗號";//例如 "1,2,3";
$conditions = "WHERE t.fid<>'$fid' AND f.fid=t.fid AND f.fid NOT IN ($fids) ORDER BY t.dateline DESC LIMIT 0, 11";
break;
case 'newreply':
$table = 'threads t, '.$tablepre.'forums f';
$cols = "t.tid, t.subject, t.author, t.dateline, t.views, t.replies, t.lastpost, t.lastposter, t.highlight, f.name";
$fids="填上不需要顯示回帖區域的 fid 編號, 以逗號作分格, 最後一個不用加上逗號";//例如 "1,2,3";
$conditions = "WHERE t.fid<>'$fid' AND f.fid=t.fid AND f.fid NOT IN ($fids) AND t.replies !=0 ORDER BY t.lastpost DESC LIMIT 0, 11";
break;
case 'todaynewmems':
$table = 'members';
$cols = 'COUNT(*)';
$datecut = time() - (3600 * 24);
$conditions = "WHERE regdate>='$datecut'";
break;
case 'todayvisit':
$table = 'members';
$cols = "COUNT(*)";
$datecut = time() - (3600 * 24);
$conditions = "WHERE lastactivity>='$datecut' ORDER BY lastvisit DESC";
break;
找
case 'forumlinks':
global $forumlinkstatus;
上面加上
case 'newreply':
$hack_cut_str = 26;
$new_reply_threadlist = array();
$rthread = array();
$colorarray = array('', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
while($rthread = $db->fetch_array($query)){
$rthread['forumname'] = $rthread['name'];
$rthread['view_subject'] = cutstr($rthread['subject'],$hack_cut_str);
$rthread['subject'] = cutstr($rthread['subject'],46);
$rthread['date']= gmdate('Y-n-j G:i', $rthread['dateline'] + 8 * 3600);
$rthread['lastreplytime']= gmdate('Y-n-j G:i', $rthread['lastpost'] + 8 * 3600);
if($rthread['highlight']) {
$string = sprintf('%02d', $rthread['highlight']);
$stylestr = sprintf('%03b', $string[0]);
$rthread['highlight'] = 'style="';
$rthread['highlight'] .= $stylestr[0] ? 'font-weight: bold;' : '';
$rthread['highlight'] .= $stylestr[1] ? 'font-style: italic;' : '';
$rthread['highlight'] .= $stylestr[2] ? 'text-decoration: underline;' : '';
$rthread['highlight'] .= $string[1] ? 'color: '.$colorarray[$string[1]] : '';
$rthread['highlight'] .= '"';
} else {
$rthread['highlight'] = '';
}
$new_reply_threadlist = "<a href=\"redirect.php?tid=$rthread[tid]&goto=lastpost#lastpost\" title=\"論壇: $rthread[forumname]\r\n標題: $rthread[subject]\r\n作者: $rthread[author]\r\n發表時間: $rthread[date]\r\n瀏覽次數: $rthread[views] 次\r\n回覆: $rthread[replies] 次\r\n最後回覆: $rthread[lastreplytime]\r\n最後發表: $rthread[lastposter]\" $rthread[highlight]>$rthread[view_subject]</a><br />";
$data[] = array('content' => $new_reply_threadlist);
}
break;
case 'newtopic':
$hack_cut_str = 26;
$new_post_threadlist = array();
$nthread = array();
$colorarray = array('', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
while($nthread = $db->fetch_array($query)){
$nthread['forumname'] = $nthread['name'];
$nthread['view_subject'] = cutstr($nthread['subject'],$hack_cut_str);
$nthread['subject'] = cutstr($nthread['subject'],46);
$nthread['date']= gmdate('Y-n-j G:i', $nthread['dateline'] + 8 * 3600);
$nthread['lastreplytime']= gmdate('Y-n-j G:i', $nthread[lastpost] + 8 * 3600);
if($nthread['highlight']) {
$string = sprintf('%02d', $nthread['highlight']);
$stylestr = sprintf('%03b', $string[0]);
$nthread['highlight'] = 'style="';
$nthread['highlight'] .= $stylestr[0] ? 'font-weight: bold;' : '';
$nthread['highlight'] .= $stylestr[1] ? 'font-style: italic;' : '';
$nthread['highlight'] .= $stylestr[2] ? 'text-decoration: underline;' : '';
$nthread['highlight'] .= $string[1] ? 'color: '.$colorarray[$string[1]] : '';
$nthread['highlight'] .= '"';
} else {
$nthread['highlight'] = '';
}
$new_post_threadlist = $nthread[replies] ? "<a href=\"redirect.php?tid=$nthread[tid]&goto=lastpost#lastpost\" title=\"論壇: $nthread[forumname]\r\n標題: $nthread[subject]\r\n作者: $nthread[author]\r\n發表時間: $nthread[date]\r\n瀏覽次數: $nthread[views] 次 \r\n回覆: $nthread[replies] 次\r\n最後回覆: $nthread[lastreplytime]\r\n最後發表: $nthread[lastposter]\" $nthread[highlight] >$nthread[view_subject]</a><br />" : "<a href=\"redirect.php?tid=$nthread[tid]&goto=lastpost#lastpost\" title=\"論壇: $nthread[forumname]\r\n標題: $nthread[subject]\r\n作者: $nthread[author]\r\n發表時間: $nthread[date]\r\n瀏覽次數: $nthread[views] 次\r\n回覆: 暫時沒有回覆\" $nthread[highlight] >$nthread[view_subject]</a><br />";
$data[] = array('content' => $new_post_threadlist);
}
break;
2. 修改 include/newthread.inc.php
找
showmessage('post_newthread_succeed', "viewthread.php?tid=$tid&extra=$extra".(!empty($frombbs) ? "&frombbs=$frombbs" : ''));
在上面加上
require DISCUZ_ROOT.'./include/cache.func.php';
updatecache('newtopic');
3. 修改 include/newreply.inc.php
找
showmessage($replymessage, "viewthread.php?tid=$tid&pid=$pid&page=".(@ceil(($thread['special'] ? $thread['replies'] + 1 : $thread['replies'] + 2) / $ppp))."&extra=$extra#pid$pid");
在上面加上
require DISCUZ_ROOT.'./include/cache.func.php';
updatecache(array('newreply','newtopic'));
4. 修改 include/editpost.inc.php
找到及刪除
require_once DISCUZ_ROOT.'./include/cache.func.php';
找
在下面加上
require_once DISCUZ_ROOT.'./include/cache.func.php';
找
$db->query("DELETE FROM {$tablepre}polls WHERE tid='$tid'");
在下面加上
找
$db->query("UPDATE {$tablepre}threads SET replies=replies-'1', attachment='$thread_attachment', lastposter='$lastpost[author]', lastpost='$lastpost[dateline]' WHERE tid='$tid'", 'UNBUFFERED');
在下面加上
updatecache(array('newreply','newtopic'));
5. 修改 include/counter.inc.php
找
if(!$sessionexists) {
if(strpos($visitor['agent'], 'Netscape')) {
$visitor['browser'] = 'Netscape';
} elseif(strpos($visitor['agent'], 'Lynx')) {
$visitor['browser'] = 'Lynx';
} elseif(strpos($visitor['agent'], 'Opera')) {
$visitor['browser'] = 'Opera';
} elseif(strpos($visitor['agent'], 'Konqueror')) {
$visitor['browser'] = 'Konqueror';
} elseif(strpos($visitor['agent'], 'MSIE')) {
$visitor['browser'] = 'MSIE';
} elseif(substr($visitor['agent'], 0, 7) == 'Mozilla') {
$visitor['browser'] = 'Mozilla';
} else {
$visitor['browser'] = 'Other';
}
if(strpos($visitor['agent'], 'Win')) {
$visitor['os'] = 'Windows';
} elseif(strpos($visitor['agent'], 'Mac')) {
$visitor['os'] = 'Mac';
} elseif(strpos($visitor['agent'], 'Linux')) {
$visitor['os'] = 'Linux';
} elseif(strpos($visitor['agent'], 'FreeBSD')) {
$visitor['os'] = 'FreeBSD';
} elseif(strpos($visitor['agent'], 'SunOS')) {
$visitor['os'] = 'SunOS';
} elseif(strpos($visitor['agent'], 'OS/2')) {
$visitor['os'] = 'OS/2';
} elseif(strpos($visitor['agent'], 'AIX')) {
$visitor['os'] = 'AIX';
} elseif(preg_match("/(Bot|Crawl|Spider)/i", $visitor['agent'])) {
$visitor['os'] = 'Spiders';
} else {
$visitor['os'] = 'Other';
}
更換為
if (!$sessionexists || $discuz_uid) {
if (ereg("MSIE ([0-9.]+)", $visitor['agent'], $browser)) {
$browser_ver = $browser[1];
$visitor_browser = "Internet Explorer " . $browser_ver;
$visitor['browser'] = 'MSIE';
} elseif (ereg("Firefox/([0-9.]+)", $visitor['agent'], $browser)) {
$browser_ver = $browser[1];
$visitor_browser = "Mozilla Firefox " . $browser_ver;
$visitor['browser'] = 'Mozilla';
} elseif (ereg("Version/([0-9.]+) Safari/", $visitor['agent'], $browser)) {
$browser_ver = $browser[1];
$visitor_browser = "Apple Safari " . $browser_ver;
$visitor['browser'] = 'Safari';
} elseif (strpos($visitor['agent'], "Netscape")) {
$visitor_browser = "Netscape";
$visitor['browser'] = 'Netscape';
} elseif (strpos($visitor['agent'], "Lynx")) {
$visitor_browser = "Lynx";
$visitor['browser'] = 'Lynx';
} elseif (strpos($visitor['agent'], "Opera")) {
$visitor_browser = "Opera";
$visitor['browser'] = 'Opera';
} elseif (strpos($visitor['agent'], "Konqueror")) {
$visitor_browser = "Konqueror";
$visitor['browser'] = 'Konqueror';
} elseif (strpos($visitor['agent'], "Mozilla/5.0")) {
$visitor_browser = "Mozilla";
$visitor['browser'] = 'Mozilla';
} else {
$visitor_browser = "其它";
$visitor['browser'] = 'Other';
}
if (strpos($visitor['agent'], "NT 5.1")) {
if (strpos($visitor['agent'], "SV1")){
$visitor_os = "Windows XP SP2";
$visitor['os'] = 'Windows';
} else {
$visitor_os = "Windows XP";
$visitor['os'] = 'Windows';
}
} elseif (strpos($visitor['agent'], "NT 6.0")) {
$visitor_os = "Windows Vista";
$visitor['os'] = 'Windows';
} elseif (strpos($visitor['agent'], "NT 5.2")) {
$visitor_os = "Windows Server 2003";
$visitor['os'] = 'Windows';
} elseif (strpos($visitor['agent'], "NT 5")) {
$visitor_os = "Windows 2000";
$visitor['os'] = 'Windows';
} elseif (strpos($visitor['agent'], "4.9")) {
$visitor_os = "Windows ME";
$visitor['os'] = 'Windows';
} elseif (strpos($visitor['agent'], "NT 4")) {
$visitor_os = "Windows NT 4.0";
$visitor['os'] = 'Windows';
} elseif (strpos($visitor['agent'], "98")) {
$visitor_os = "Windows 98";
$visitor['os'] = 'Windows';
} elseif (strpos($visitor['agent'], "95")) {
$visitor_os = "Windows 95";
$visitor['os'] = 'Windows';
} elseif (strpos($visitor['agent'], "Mac")) {
$visitor_os = "Mac";
$visitor['os'] = 'Mac';
} elseif (strpos($visitor['agent'], "Linux")) {
$visitor_os = "Linux";
$visitor['os'] = 'Linux';
} elseif (strpos($visitor['agent'], "Unix")) {
$visitor_os = "Unix";
$visitor['os'] = 'Other';
} elseif (strpos($visitor['agent'], "FreeBSD")) {
$visitor_os = "FreeBSD";
$visitor['os'] = 'FreeBSD';
} elseif (strpos($visitor['agent'], "SunOS")) {
$visitor_os = "SunOS";
$visitor['os'] = 'SunOS';
} elseif (strpos($visitor['agent'], "OS/2")) {
$visitor_os = "OS/2";
$visitor['os'] = 'OS/2';
} elseif (strpos($visitor['agent'], "AIX")) {
$visitor_os = "AIX";
$visitor['os'] = 'AIX';
} elseif (preg_match("/(Bot|Crawl|Spider)/i", $visitor['agent'])) {
$visitor_os = "Spiders";
$visitor['os'] = 'Spiders';
} else {
$visitor_os = "其他";
$visitor['os'] = 'Other';
}
6. 修改 topicadmin.php
找
(是第一段約第 15 行那句)
require_once DISCUZ_ROOT.'./include/misc.func.php';
在下面加上
require_once DISCUZ_ROOT.'./include/cache.func.php';
找
showmessage((isset($resultarray['message']) ? $resultarray['message'] : 'admin_succeed'), $resultarray['redirect']);
在上面加上
updatecache(array('newreply','newtopic'));
7. 修改 logging.php
找
在下面加上
require_once DISCUZ_ROOT.'./include/cache.func.php';
updatecache('todayvisit');
8. 修改 index.php
找
$catlist = $forumlist = $sublist = $forumname = $collapseimg = $collapse = array();
在上面加上
//-----------hack AL8 Info
if(!$statstatus && $discuz_uid){
require_once DISCUZ_ROOT.'./include/counter.inc.php';
$unreadpmnum = $db->result_first("SELECT COUNT(*) FROM ".UC_DBTABLEPRE."pms WHERE msgtoid='$discuz_uid' AND new=1");
}
require_once DISCUZ_ROOT.'./include/misc.func.php';
$mem_home = convertip($onlineip, $datadir = "./");
require_once DISCUZ_ROOT.'./forumdata/cache/cache_todayvisit.php';
$todayvisit = $_DCACHE['todayvisit']['0']['COUNT(*)'];
require_once DISCUZ_ROOT.'./forumdata/cache/cache_todaynewmems.php';
$todaynewmems = $_DCACHE['todaynewmems']['0']['COUNT(*)'];
@include './forumdata/cache/cache_newtopic.php';
@include './forumdata/cache/cache_newreply.php';
//-----------hack AL8 Info End
找
'forumlinks', 'birthdays'
在後面插入
9. 修改 register.php
找
$_DCACHE['settings']['totalmembers']++;
在上面加上
updatecache('todaynewmems');
8. 修改 discuz 模板
找
<div id="nav">
<!--{if $gid || !$discuz_uid}--><a href="$indexname">$bbname</a><!--{/if}-->
</div>
<p>
<!--{if $discuz_uid}-->
<!--{if $allowinvisible}-->{lang online_status}:
<span id="loginstatus"><!--{if !empty($invisible)}--><a href="member.php?action=switchstatus" onclick="ajaxget(this.href, 'loginstatus');doane(event);">{lang login_invisible_mode}</a><!--{else}--><a href="member.php?action=switchstatus" title="{lang login_switch_invisible_mode}" onclick="ajaxget(this.href, 'loginstatus');doane(event);">{lang login_normal_mode}</a><!--{/if}--></span><br />
<!--{/if}-->
{lang your_lastvisit}: <em>$lastvisittime</em>
<!--{if !empty($google) && ($google & 1)}--><br /><!--{/if}-->
<a href="search.php?srchfrom=$newthreads&searchsubmit=yes">{lang show_newthreads}</a>
<a href="member.php?action=markread" id="ajax_markread" onclick="ajaxmenu(event, this.id)">{lang mark_read}</a>
<!--{elseif !empty($_DCOOKIE['loginuser'])}-->
<em>$_DCOOKIE['loginuser']</em>, <a href="logging.php?action=login">{lang index_activation}</a>
<!--{else}-->
<form id="loginform" method="post" name="login" action="logging.php?action=login&loginsubmit=true">
<input type="hidden" name="formhash" value="{FORMHASH}" />
<input type="hidden" name="cookietime" value="2592000" />
<input type="hidden" name="loginfield" value="username" />
<input type="text" id="username" name="username" size="15" maxlength="40" tabindex="1" value="{lang username}" onclick="this.value = ''" />
<input type="password" id="password" name="password" size="10" tabindex="2" onkeypress="if((event.keyCode ? event.keyCode : event.charCode) == 13) $('loginform').submit()" />
<button name="userlogin" type="submit" value="true">{lang login}</button>
</form>
<!--{/if}-->
</p>
</div>
<div id="forumstats">
<p>
{lang index_today}: <em>$todayposts</em>, {lang index_yesterday}: <em>$postdata[0]</em>, {lang index_maxday}: <em>$postdata[1]</em> <a href="digest.php">{lang digest}</a>
<!--{if $rssstatus}--><a href="rss.php?auth=$rssauth" title="{lang rss_subscribe_all}" target="_blank"><img src="images/common/xml.gif" alt="{lang rss_subscribe_all}" /></a><!--{/if}-->
</p>
<p>{lang index_threads}: <em>$threads</em>, {lang index_posts}: <em>$posts</em>, {lang index_members}: <em>$totalmembers</em>, {lang welcome_newmember} <cite><a href="space.php?username=$memberenc">$lastmember</a></cite></p>
</div>
<!--{if !empty($google) && ($google & 1)}-->
<div id="headsearch" style="clear: both">
<script type="text/javascript" src="forumdata/cache/google_var.js"></script>
<script type="text/javascript" src="include/javascript/google.js"></script>
</div>
<!--{/if}-->
</div>
<!--{if empty($gid) && $announcements}-->
<div id="announcement" onmouseover="annstop = 1" onmouseout="annstop = 0">
<div id="announcementbody"><ul>$announcements</ul></div>
</div>
<script type="text/javascript">
var anndelay = 3000;
var annst = 0;
var annstop = 0;
var annrowcount = 0;
var anncount = 0;
var annlis = $('announcementbody').getElementsByTagName("LI");
var annrows = new Array();
var annstatus;
function announcementScroll() {
if(annstop) {
annst = setTimeout('announcementScroll()', anndelay);
return;
}
if(!annst) {
var lasttop = -1;
for(i = 0;i < annlis.length;i++) {
if(lasttop != annlis[i].offsetTop) {
if(lasttop == -1) {
lasttop = 0;
}
annrows[annrowcount] = annlis[i].offsetTop - lasttop;
annrowcount++;
}
lasttop = annlis[i].offsetTop;
}
if(annrows.length == 1) {
$('announcement').onmouseover = $('announcement').onmouseout = null;
} else {
annrows[annrowcount] = annrows[1];
$('announcementbody').innerHTML += '<br style="clear:both" />' + $('announcementbody').innerHTML;
annst = setTimeout('announcementScroll()', anndelay);
}
annrowcount = 1;
return;
}
if(annrowcount >= annrows.length) {
$('announcementbody').scrollTop = 0;
annrowcount = 1;
annst = setTimeout('announcementScroll()', anndelay);
} else {
anncount = 0;
announcementScrollnext(annrows[annrowcount]);
}
}
function announcementScrollnext(time) {
$('announcementbody').scrollTop++;
anncount++;
if(anncount != time) {
annst = setTimeout('announcementScrollnext(' + time + ')', 10);
} else {
annrowcount++;
annst = setTimeout('announcementScroll()', anndelay);
}
}
</script>
<!--{/if}-->
更換為
<div id="nav">
<!--{if $gid || !$discuz_uid}--><a href="$indexname">$bbname</a><!--{/if}-->
</div>
</div>
<div id="forumstats">
<p align="right">
<span style="line-height: 18px;">
<!--{if !empty($stylejumpstatus)}-->
<script type="text/javascript">
function setstyle(styleid) {
<!--{if CURSCRIPT == 'forumdisplay'}-->
location.href = 'forumdisplay.php?fid=$fid&page=$page&styleid=' + styleid;
<!--{elseif CURSCRIPT == 'viewthread'}-->
location.href = 'viewthread.php?tid=$tid&page=$page&styleid=' + styleid;
<!--{else}-->
location.href = 'index.php?styleid=' + styleid;
<!--{/if}-->
}
</script>
<select name="styleswitcher_a" onchange="setstyle(this.value)">
<option>{lang style}</option>
<!--{loop $stylejump $id $name}-->
<option{if $id == $styleid} selected="selected"{/if} value="$id">$name</option>
<!--{/loop}-->
</select>
<!--{/if}-->
<!--{if $rssstatus}--> <a href="rss.php?auth=$rssauth" target="_blank"><img src="images/common/xml.gif" border="0" class="absmiddle" alt="{lang rss_subscribe_all}" /></a><!--{/if}-->
</span>
</p>
</div>
</div>
<!--{if empty($gid)}-->
{template foruminfo}
<!--{/if}-->
10. 修改 css_append 模版
在最底加上
#announcement div {
border-top: none;
padding: 0px 10px;
line-height: 35px !important;
height: 36px;
overflow-y: hidden;
}
#styleswitcher_a_menu { overflow: visible; }
#styleswitcher_a_menu, #styleswitcher_a_menu ul li, #styleswitcher_a_menu ul li.current a, #styleswitcher_a_menu ul li a {
white-space: nowrap;
}
#styleswitcher_a_menu ul li.current { font-weight: bold; }
#styleswitcher_a_menu ul li.current a { color: {TEXT}; }
#styleswitcher_a_menu {}
#styleswitcher_a_menu li.current { font-weight: bold; }
.listinfo p {line-height: 1.5em; }
.listinfo a { color: {TEXT}; }
.listinfo th { vertical-align: top; color:{TEXT}; text-align: left; }
.listinfo cite { font: 1em Lucia Console; }
.listinfo strong { font-weight: bold; }
.listinfo th.rborder { border-right: 1px solid {CATBORDER}; }
button.submitmini { margin-left: 0.5em; padding: 0 2px; }
#loginstatus { font-weight: normal; }
11. 下載附件 foruminfo.rar 及解壓為 foruminfo.htm, 並執行
a. 根據自身討論區對下一段作出調整
來自 $mem_home 的訪客, 現{lang register}成為會員即獲贈現金 100 點, 用作參予本討論區的活動之用。
b. 上載至 templates/default 目錄下
c. 如果修改時漏了 "更新緩存"步驟, 可把 forumdata/cache 目錄下的檔案刪掉便可
12. 下載附件 images.rar 及上載
~完成~
[
本帖最後由 ericb001 於 2008-8-25 18:13 編輯 ]