n2n1 发表于 2022-6-30 11:43:07

Discuz! 3x 主题分类和分类信息帖子链接伪静态方法

1.主题分类伪静态设置方法:

准备好修改的模板文件:forumdisplay.htm和forumdisplay_list.htm
这两个文件都在 \template\default\forum 的目录下(有修改过discuz模板,以你的主题文件路径为准,如/template/主题模板文件夹/forum)。
我们要先修改主题分类的:打开forumdisplay.htm的源代码:
默认主题一般在415行,当然如你的主题有修改过discuz模板,以你的主题文件路径为准
1.修改forumdisplay.htm文件中<li><a href="forum.php?mod=forumdisplay&fid=$_G&filter=typeid&typeid=$id$forumdisplayadd{if $_GET['archiveid']}&archiveid={$_GET['archiveid']}{/if}">修改为:<li><a href="forumtype-$_G-$id-$page.html{if $_GET['archiveid']}&archiveid={$_GET['archiveid']}{/if}">2.接下来再打开forumdisplay_list.htm的源代码:默认主题一般在162行,如你的主题有修改过模板,以你的主题文件为准找到:<a href="forum.php?mod=viewthread&tid=$thread&{if $_GET['archiveid']}archiveid={$_GET['archiveid']}&{/if}extra=$extra"$thread{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else}{/if} class="s xst">$thread</a>修改
<a href="forum.php?mod=viewthread&tid=$thread{if $_G['gp_archiveid']}&archiveid={$_G['gp_archiveid']}{/if}"$thread{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else}{/if} class="s xst">$thread</a>3.主题类别前缀【只显示文字】,2个地方需要修改
i、打开source\module\forum\forum_forumdisplay.php,查找forum.php?mod=forumdisplay&fid='.$_G['fid'].'&filter=typeid&typeid='.$thread['typeid'].'
替换为:forumtype-'.$_G['fid'].'-'.$thread['typeid'].'-1.html
ii、打开模板目录viewthread.htm,查找forum.php?mod=forumdisplay&fid=$_G&filter=typeid&typeid=$_G
替换为:
forumtype-$_G-{$_G}-1.html

最后我们要把主题分类的伪静态规则添加到相应文件中,规则如下
(环境.htaccess,其它请自行测试):
.htaccess 伪静态规则 请在RewriteRule ^forum-(\w+)-(+)\.html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1下面增加:<div align="left"><span ";="" color:="" rgb(102,="" 102,="" 102);"="">RewriteCond %{QUERY_STRING} ^(.*)[      DISCUZ_CODE_8      ]lt;/span></div><div align="left"><span ";="" color:="" rgb(102,="" 102,="" 102);"="">RewriteRule ^forumtype-(\w+)-(\w+)-(+)\.html$ forum.php?mod=forumdisplay&fid=$1&filter=typeid&typeid=$2&page=$3&%1</span></div>

注意:增加的规则不能放最后,特别是不能 不能 不能放在插件规则RewriteRule ^(+*)-(+)\.html$ plugin.php?id=$1 :$2&%1之后,不然访问分类伪静态会出现“插件不存在或删除”的错误。
httpd.ini 伪静态规则
RewriteRule ^(.*)/forumtype-(\w+)-(\w+)-(+)\.html(\?(.*))*$ $1/forum\.php\?mod=forumdisplay&fid=$2&filter=typeid&typeid=$3&page=$4&$5

web.config 伪静态规则<div align="left"><span ";="" color:="" rgb(102,="" 102,="" 102);"=""><rule name="forum_forumtype"></span></div><div align="left"><span ";="" color:="" rgb(102,="" 102,="" 102);"=""><match url="^(.*/)*forumtype-(\w+)-(\w+)-(+).html\?*(.*)[      DISCUZ_CODE_10      ]quot; /></span></div><div align="left"><span ";="" color:="" rgb(102,="" 102,="" 102);"=""><action type="Rewrite" url="{R:1}/forum.php\?mod=forumdisplay&fid={R:2}&filter=typeid&typeid={R:3}&page={R:4}&{R:5}" /></span></div><div align="left"><span ";="" color:="" rgb(102,="" 102,="" 102);"=""></rule></span></div>

2.分类信息列表内的帖子设置伪静态方法:
打开 forum/forumdisplay_list.htm 模板,将<a href="forum.php?mod=viewthread&tid=$thread&{if $_GET['archiveid']}archiveid={$_GET['archiveid']}&{/if}extra=$extra"$thread{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else}{/if} class="s xst">$thread</a>

替换为:<a href="forum.php?mod=viewthread&tid=$thread"{$thread} {if $thread['isgroup'] == 1 || $thread['forumstick']}target="_blank"{else}onclick="atarget(this)"{/if} class="s xst">$thread</a>
修改后,当选中分类时,列表中的帖子链接将为伪静态,但帖子的分页链接仍是动态,还需进行以下修改。
打开 source/module/forum/forum_forumdisplay.php 文件,将<a href="forum.php?mod=viewthread&tid=$realtid&".(!empty($multipate_archive) ? "$multipate_archive&" : '')."extra=$extra&page=$i">
替换为:<a href="thread-$realtid-$i-1.html">
把下面代码<a href="forum.php?mod=viewthread&tid=$realtid&".(!empty($multipate_archive) ? "$multipate_archive&" : '')."extra=$extra&page=$thread">替换为:<a href="thread-$realtid-$thread-1.html">
好了完成!!!!
n2n1.cn
页: [1]
查看完整版本: Discuz! 3x 主题分类和分类信息帖子链接伪静态方法