我和大多数草根站长一样,热衷于 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]'