我和大多數草根站長一樣,熱衷於 discuz,但又對 PHP 不熟,也沒有專門的去學過,這個功能也是研究過很多天才研究出來.
下面就把版塊目錄化分享給大家,希望對喜歡這個功能的人有用.

首先說明下,這是在 Apache Web Server(虛擬主機使用者) 環境下測試可以用的,其他環境未測式.如果你是 Apache 虛擬主機使用者的話並且主機支援偽靜態,那麼可以根據以下操作方法實現我們的"版塊目錄化".
第一步:
進入後臺--論壇--編輯版塊--基本設定--繫結別名.
這裡以上圖為例,我們填寫為"yizhi",當然你也可以填別的.
第二步:
後臺--全域性--SEO 設定--URL 靜態化.
將"論壇主題列表頁"格式更改為"{fid}/{page}", 然後勾選"可用"點選提交.
第三步:
編輯你網站目錄下偽靜態規則檔案".htaccess",如果沒有此檔案,下面附件我提供.
將
- RewriteRule
^forum-(w+)-([0-9]+).html$
forum.php?mod=forumdisplay&fid=$1&page=$2&%1
更改為
- RewriteRule
^(w+)/([0-9]+)$
forum.php?mod=forumdisplay&fid=$1&page=$2&%1
然後在最下行增加一句規則:
- RewriteCond %{QUERY_STRING}
^(.*)$ - RewriteRule ^(w+)/$ forum.php?mod=forumdisplay&fid=$1
這一句規則就是版塊目錄化規則.
第四步:
網站目錄:source/function/function_core.php
首先我們把這個檔案複製一份留作備份.以便你不需要此功能後可以直接恢復.
然後我們用 DW 編輯 function_core.php,
查詢程式碼:
- if($type
== 'forum_forumdisplay') { - list(,,, $fid, $page, $extra) =
func_get_args(); - $r = array(
- '{fid}' =>
empty($_G['setting']['forumkeys'][$fid]) ? $fid :
$_G['setting']['forumkeys'][$fid], - '{page}' => $page ? $page : 1,
- );
將
- '{page}' => $page ? $page : 1,
更改為
- '{page}' => $page,
然後儲存.
最後一步,更新快取.到首頁看看效果吧,是不是實現版塊目錄化了呢?
關於版塊目錄化後版塊列表點選發貼按鈕不能發貼的解決方案:
第一種就是懶人方式:介面設定--全域性--啟用浮動視窗,勾選發貼
第二種:修改模板 forumdisplay.htm 和 forumdisplay_list.htm
查詢
- onclick="showWindow('newthread',
'forum.php?mod=post&action=newthread&fid=$_G[fid]')"{else}
onclick="location.href='forum.php?mod=post&action=newthread&fid=$_G[fid]'
在 forum.php 前加"/"
- onclick="showWindow('newthread',
'/forum.php?mod=post&action=newthread&fid=$_G[fid]')"{else}
onclick="location.href='/forum.php?mod=post&action=newthread&fid=$_G[fid]'