Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[修改] 一步一步教你怎么让discuz X3的标签链接支持中文并且将url进行重写

[复制链接]
uudzs 发表于 2015-5-29 02:08:41 | 显示全部楼层 |阅读模式
本帖最后由 uudzs 于 2015-5-30 16:56 编辑

怎么让discuz X3的标签链接支持中文并且将url进行重写

特别申明:本人测试的版本为3.1,但3.2也支持。
        回到正题,misc.php?mod=tag&id=1,默认情况下内容展示页和标签列表页的标签链接会是前面的样子,但这样对搜索并不友好,并且标签是很好的内链工具,不能没有它,但每次看到这样的链接内心无比惆怅,经过分析源代码,发现系统本身是可以接收标签名称传递的,例如原来是:misc.php?mod=tag&id=1,也可以改成 misc.php?mod=tag&name=手机维修教程 这样子,当然改成中文并不完美,因为url不友好,于是只需改模板和添加Rewrite规则就能实现,马上动手来实现。

友情提示:
        如果你没有使用默认模板,那只需把默认模板下要修改的文件复制到正在使用的模板目录下再进行修改,尽量不要在默认模板上更改,如果正在使用的就是默认模板也没关系,可以把默认模板复制一份,改一下目录名称及相关的参数当一个新的模板来用也是可以的,如果认为这样太麻烦也可以就在默认模板上修改,效果也一样。

首先把template/default/tag/目录复制到新的模板template/你正在使用的模板名称/下,目录里面有两个文件,先改tag.htm。

  1. <a href="misc.php?mod=tag&id=$tag[tagid]"
复制代码
改成
  1. <a href="tag-<!--{eval echo urlencode($tag[tagname])}-->.html"
复制代码
这里需要说明的是,中文需要urlencode编码一下,不然在某些浏览器下会获取不到传送的值,搜索是支持urlencode的,所以这点不必担心。
继续改同目录下的tagitem.htm文件
将所有
  1. misc.php?mod=tag&id=$id
复制代码
改成
  1. tag-<!--{eval echo urlencode($tagname)}-->.html
复制代码

接着改贴子内容页的链接,与上面同理,把/template/default/forum/viewthread_node_body.htm文件复制到/template/你正在使用的模板名称/forum/viewthread_node_body.htm。


  1. misc.php?mod=tag&id=$var[0]
复制代码
改成
  1. tag-<!--{eval echo urlencode($var[1])}-->.html
复制代码
这里也需要urlencode,至此模板已改完。

下面来设置伪静态的rewrite规则,这里以apache的.htaccess文件为例,其它web服务器的规则也差不多,不懂的网上有规则转换的工具,转换一下就是了,这里就不一一细说了。
  1. RewriteCond %{QUERY_STRING} ^(.*)$
  2. RewriteRule ^tag-(.+)\.html$ misc.php?mod=tag&name=$1&%1
复制代码
将上面的规则添加到.htaccess文件里面然后更新一下缓存就ok了。

具体效果可以查看:http://www.hanshouji.com/show-5614-1-1.html

有问题可以留言,我会及时回复大家。



选峰工作室 发表于 2015-5-29 13:46:29 | 显示全部楼层
顶一下。发个原创帖不容易。虽然这个修改早就有人实现了。倒是想向楼主学修手机的技术。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 02:22 , Processed in 0.029860 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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