微信论坛

 找回密码
 立即注册
查看: 18120|回复: 0
打印 上一主题 下一主题

Discuz! X3.1主题分类伪静态设置方法(无需插件)

[复制链接]

主题

帖子

0

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
0
跳转到指定楼层
楼主
发表于 2020-12-14 13:41:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Discuz! X3.1主题分类伪静态设置方法(无需插件)



准备好修改的模板文件:forumdisplay.htm和forumdisplay_list.htm

这两个文件都在 \template\default\forum 的目录下(有修改过discuz模板,以你的主题文件路径为准,如/template/主题模板文件夹/forum)。

我们要先修改主题分类的:打开forumdisplay.htm的源代码:

默认主题一般在415行,当然如你的主题有修改过discuz模板,以你的主题文件路径为准

1.修改forumdisplay.htm文件中
  1. <li><a href="forum.php?mod=forumdisplay&fid=$_G[fid]&filter=typeid&typeid=$id$forumdisplayadd[typeid]{if $_GET['archiveid']}&archiveid={$_GET['archiveid']}{/if}">
复制代码
修改为:
  1. <li><a href="forumtype-$_G[fid]-$id-$page.html{if $_GET['archiveid']}&archiveid={$_GET['archiveid']}{/if}">
复制代码


2.接下来再打开forumdisplay_list.htm的源代码:默认主题一般在162行,如你的主题有修改过模板,以你的主题文件为准找到:
  1. <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>
复制代码

修改为:
  1. <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个地方需要修改

①打开source\module\forum\forum_forumdisplay.php,查找
  1. forum.php?mod=forumdisplay&fid='.$_G['fid'].'&filter=typeid&typeid='.$thread['typeid'].'
复制代码


替换为:
  1. forumtype-'.$_G['fid'].'-'.$thread['typeid'].'-1.html
复制代码


②、打开模板目录viewthread.htm,查找
  1. forum.php?mod=forumdisplay&fid=$_G[fid]&filter=typeid&typeid=$_G[forum_thread][typeid]
复制代码


注意【有可以找不到】,因为&这个符号有的代码是用amp的那个转义字符代替了。

替换为:
  1. forumtype-$_G[fid]-{$_G[forum_thread][typeid]}-1.html
复制代码


最后我们要把主题分类的伪静态规则添加到相应文件中,规则如下

(因为环境问题,只测试了.htaccess,其它请自行测试):

.htaccess 伪静态规则 请在末二行的上面增加:
  1. RewriteCond %{QUERY_STRING} ^(.*)$
  2. RewriteRule ^forumtype-(\w+)-(\w+)-([0-9]+)\.html$ forum.php?mod=forumdisplay&fid=$1&filter=typeid&typeid=$2&page=$3&%1
复制代码


注意:增加的规则不能放最后,特别是 不能 放在插件规则的最后【必须要在末二行的上面】,不然访问分类伪静态会出现“插件不存在或删除”的错误。

httpd.ini 伪静态规则
  1. RewriteRule ^(.*)/forumtype-(\w+)-(\w+)-([0-9]+)\.html(\?(.*))*$ $1/forum\.php\?mod=forumdisplay&fid=$2&filter=typeid&typeid=$3&page=$4&$5
复制代码



web.config 伪静态规则
  1. <rule name="forum_forumtype">
  2. <match url="^(.*/)*forumtype-(\w+)-(\w+)-([0-9]+).html\?*(.*)[ DISCUZ_CODE_2 ]quot; />
  3. <action type="Rewrite" url="{R:1}/forum.php\?mod=forumdisplay&fid={R:2}&filter=typeid&typeid={R:3}&page={R:4}&{R:5}" />
  4. </rule>
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|微信人家论坛 ( 沪ICP备14052918号-4 )微信第三方平台沪公网安备 31011402006408号  

GMT+8, 2024-11-22 01:16 , Processed in 0.326696 second(s), 31 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表