网上99%都是不完善和残缺的 或者各种不兼容,有的论坛还复制别人的DZ3.2版本的伪静态方法说是支持3.4版本的,全是让人浪费时间。
A、主题分类伪静态设置方法:
准备好修改的模板文件:forumdisplay.htm和forumdisplay_list.htm
这两个文件都在 templatedefaultforum 的目录下(有修改过discuz模板,以你的主题文件路径为准,如/template/主题模板文件夹/forum)。
我们要先修改主题分类的:打开forumdisplay.htm的源代码:
默认主题一般在415行,当然如你的主题有修改过discuz模板,以你的主题文件路径为准
1.修改forumdisplay.htm文件中
<li><a href="forum.php?mod=forumdisplay&fid=$_G[fid]&filter=typeid&typeid=$id$forumdisplayadd[typeid]{if $_GET['archiveid']}&archiveid={$_GET['archiveid']}{/if}">修改为:
<li><a href="forumtype-$_G[fid]-$id-$page.html{if $_GET['archiveid']}&archiveid={$_GET['archiveid']}{/if}">2.接下来再打开forumdisplay_list.htm的源代码:默认主题一般在162行,如你的主题有修改过模板,以你的主题文件为准找到:
<a href="forum.php?mod=viewthread&tid=$thread[tid]&{if $_GET['archiveid']}archiveid={$_GET['archiveid']}&{/if}extra=$extra"$thread[highlight]{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else} onclick="atarget(this)"{/if} class="s xst">$thread[subject]</a>修改为:
<a href="forum.php?mod=viewthread&tid=$thread[tid]{if $_G['gp_archiveid']}&archiveid={$_G['gp_archiveid']}{/if}"$thread[highlight]{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else} onclick="atarget(this)"{/if} class="s xst">$thread[subject]</a>3.主题类别前缀【只显示文字】,2个地方需要修改
i、打开sourcemoduleforumforum_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[fid]&filter=typeid&typeid=$_G[forum_thread][typeid]
替换为:
forumtype-$_G[fid]-{$_G[forum_thread][typeid]}-1.html最后我们要把主题分类的伪静态规则添加到相应文件中,规则如下
(因为环境问题,只测试了.htaccess,其它请自行测试):
.htaccess 伪静态规则 请在RewriteRule ^forum-(w+)-([0-9]+).html$ forum.php?mod=forumdisplay&fid=$1&page=$2&%1下面增加:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^forumtype-(w+)-(w+)-([0-9]+).html$ forum.php?mod=forumdisplay&fid=$1&filter=typeid&typeid=$2&page=$3&%1注意:增加的规则不能放最后,特别是不能 不能 不能放在插件规则RewriteRule ^([a-z]+[a-z0-9_]*)-([a-z0-9_-]+).html$ plugin.php?id=$1 :$2&%1之后,不然访问分类伪静态会出现“插件不存在或删除”的错误。
httpd.ini 伪静态规则
RewriteRule ^(.*)/forumtype-(w+)-(w+)-([0-9]+).html(?(.*))*$ $1/forum.php?mod=forumdisplay&fid=$2&filter=typeid&typeid=$3&page=$4&$5
web.config 伪静态规则
<rule name="forum_forumtype">
<match url="^(.*/)*forumtype-(w+)-(w+)-([0-9]+).html?*(.*)[ DISCUZ_CODE_2 ]quot; />
<action type="Rewrite" url="{R:1}/forum.php?mod=forumdisplay&fid={R:2}&filter=typeid&typeid={R:3}&page={R:4}&{R:5}" />
</rule>B、分类信息列表内的帖子设置伪静态方法:
打开 forum/forumdisplay_list.htm 模板,将
<a href="forum.php?mod=viewthread&tid=$thread[tid]&{if $_GET['archiveid']}archiveid={$_GET['archiveid']}&{/if}extra=$extra"$thread[highlight]{if $thread['isgroup'] == 1 || $thread['forumstick']} target="_blank"{else}{/if} class="s xst">$thread[subject]</a>替换为:
<a href="forum.php?mod=viewthread&tid=$thread[tid]"{$thread[highlight]} {if $thread['isgroup'] == 1 || $thread['forumstick']}target="_blank"{else}onclick="atarget(this)"{/if} class="s xst">$thread[subject]</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[pages]">
替换为:
<a href="thread-$realtid-$thread[pages]-1.html">
这样,Discuz! X3.4 主题分类和分类信息帖子链接都会为伪静态,有兴趣的站长赶紧试试啊(默认模板测试有效)!
本文《Discuz! X3.4主题分类和分类信息伪静态设置方法(亲测可用)》由网友投稿或:「admin」整理自网络。
转载请声明来自:云猴子 - https://www.yunhouzi.com/267.html
1,本站所有资源均来源于用户上传或整理与网络,如有侵权请【内容投诉】删除,我们将及时处理!
2,本站资源仅供大家学习和交流,请不要用于商业用途,下载后请于24小时后删除!
3,如果你也有好的资源,可以投稿到本站,有金币奖励和额外的收入!
4,从您进入本站开始,已表示您已同意接受本站【版权声明】中的一切条款!
6,申明:本站资源出售只是赞助,仅用于本站服务器和日常运营所需!不提供任何技术支持。
7,如压缩包提示有密码,www.yunhouzi.com
云猴子 » Discuz! X3.4主题分类和分类信息伪静态设置方法(亲测可用)