12下一页
返回列表 发帖
查看: 16594|回复: 19

Discuz! X3.4主题分类和分类信息伪静态设置方法(亲测可用)

83

主题

2795

回帖

3564

积分

功行圆满

贡献
22 点
金币
351 个
发表于 2019-7-21 19:59:28 | 显示全部楼层 |阅读模式
网上99%都是不完善和残缺的 或者各种不兼容,有的论坛还复制别人的DZ3.2版本的伪静态方法说是支持3.4版本的,全是让人浪费时间。

A、主题分类伪静态设置方法:

准备好修改的模板文件: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个地方需要修改

i、打开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
复制代码


ii、打开模板目录viewthread.htm,查找

  1. forum.php?mod=forumdisplay&fid=$_G[fid]&filter=typeid&typeid=$_G[forum_thread][typeid]
复制代码


替换为:

  1. 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下面增加:

  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
复制代码


注意:增加的规则不能放最后,特别是不能 不能 不能放在插件规则RewriteRule ^([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ plugin.php?id=$1 :$2&%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>
复制代码


B、分类信息列表内的帖子设置伪静态方法:

打开 forum/forumdisplay_list.htm 模板,将

  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}{/if} class="s xst">$thread[subject]</a>
复制代码


替换为:

  1. <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 文件,将

  1. <a href="forum.php?mod=viewthread&tid=$realtid&".(!empty($multipate_archive) ? "$multipate_archive&" : '')."extra=$extra&page=$i">
复制代码


替换为:

  1. <a href="thread-$realtid-$i-1.html">
复制代码




  1. <a href="forum.php?mod=viewthread&tid=$realtid&".(!empty($multipate_archive) ? "$multipate_archive&" : '')."extra=$extra&page=$thread[pages]">
复制代码


替换为:

  1. <a href="thread-$realtid-$thread[pages]-1.html">
复制代码



这样,Discuz! X3.4 主题分类和分类信息帖子链接都会为伪静态,有兴趣的站长赶紧试试啊!


回复

使用道具 举报

11

主题

53

回帖

73

积分

渐入佳境

贡献
0 点
金币
6 个
发表于 2019-7-21 21:08:41 | 显示全部楼层
感谢老大分享
回复 支持 1 反对 0

使用道具 举报

60

主题

127

回帖

224

积分

炉火纯青

贡献
0 点
金币
31 个
发表于 2019-7-23 18:50:34 | 显示全部楼层
感谢分享,学习了
学习使人进步
回复 支持 反对

使用道具 举报

60

主题

127

回帖

224

积分

炉火纯青

贡献
0 点
金币
31 个
发表于 2019-7-23 23:44:50 | 显示全部楼层
测试了一下,A类 主题分类伪静态设置方法 亲测有效

B类的 不行 设置修改后   分类信息 列表内的帖子还是 动态  列表分页 也是动态


不过还是谢谢你的分享
学习使人进步
回复 支持 反对

使用道具 举报

60

主题

127

回帖

224

积分

炉火纯青

贡献
0 点
金币
31 个
发表于 2019-7-25 13:50:59 | 显示全部楼层
A、主题分类伪静态设置方法  这个方法可以用,测试过了,生效了
非常感谢
B类的方法测试了下 不生效,不知道原因出在哪里
学习使人进步
回复 支持 反对

使用道具 举报

83

主题

2795

回帖

3564

积分

功行圆满

贡献
22 点
金币
351 个
 楼主| 发表于 2019-7-25 18:46:52 | 显示全部楼层
sosoba 发表于 2019-7-25 13:50
A、主题分类伪静态设置方法  这个方法可以用,测试过了,生效了
非常感谢
B类的方法测试了下 不生效,不知 ...

大概是第三方模版问题

回复 支持 反对

使用道具 举报

60

主题

127

回帖

224

积分

炉火纯青

贡献
0 点
金币
31 个
发表于 2019-7-26 13:39:24 | 显示全部楼层
allthebest 发表于 2019-7-25 18:46
大概是第三方模版问题

有这个可能 我还在测试 不过感谢你的教程,非常棒
学习使人进步
回复 支持 反对

使用道具 举报

1

主题

1

回帖

2

积分

初学乍练

贡献
0 点
金币
0 个
发表于 2020-1-9 07:10:14 来自手机 | 显示全部楼层
感谢大佬分享
回复 支持 反对

使用道具 举报

0

主题

48

回帖

53

积分

渐入佳境

贡献
0 点
金币
5 个
发表于 2020-1-9 14:44:56 | 显示全部楼层
学习了,很好的分享
回复 支持 反对

使用道具 举报

12

主题

125

回帖

183

积分

渐入佳境

贡献
0 点
金币
41 个
发表于 2020-9-14 20:29:34 | 显示全部楼层
学习了,很好的分享
回复 支持 反对

使用道具 举报

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

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-4-25 06:30 , Processed in 0.063163 second(s), 19 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表