老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
39,801

Discuz! X3.1 主题分类与排序功能伪静态解决方案

分类 网站技术/村民张先生 发布于 2014-07-31 10:46
7

注意:此方案将使“主题分类”链接伪静态化,但将去掉“分类信息”在版块中的显示链接(不影响实际帖子中显示分类信息),同时将去掉原有的部分排序功能:热帖(多数版块内容不多,保留按热度值排序的“热门”功能即可),时间排序(不完善,无意义)。

1、首先添加伪静态规则(以Nginx为例):

rewrite ^([^\.]*)/forum-([0-9]+)-h([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=heat&orderby=heats&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-d([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-l([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=lastpost&orderby=lastpost&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-n([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=author&orderby=dateline&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-r([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=reply&orderby=replies&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-v([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=reply&orderby=views&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=typeid&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-d([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-l([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=lastpost&orderby=lastpost&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-n([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=author&orderby=dateline&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-r([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=reply&orderby=replies&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-v([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=reply&orderby=views&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-dl([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&orderby=lastpost&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-dn([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&orderby=dateline&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-dr([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&orderby=replies&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-dv([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&orderby=views&page=$3 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-dl([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&orderby=lastpost&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-dn([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&orderby=dateline&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-dr([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&orderby=replies&typeid=$3&page=$4 last;
rewrite ^([^\.]*)/forum-([0-9]+)-([0-9]+)-dv([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&filter=digest&digest=1&orderby=views&typeid=$3&page=$4 last;

以上规则依次为 热度(评价)排序、精华帖、最后回复时间排序、按发帖时间排序、最多回复排序、最多浏览排序、主题分类、分类下精华帖、分类按最后回复排序、分类按发帖时间排序、分类按最多回复排序、分类按浏览次数排序、精华按最后回复时间排序、精华按发帖时间排序、精华按最多回复排序、精华按最多浏览排序、分类下精华按最后回复时间排序、分类下精华按发帖时间排序、分类下精华按最多回复排序、分类下精华按最多浏览排序。

注意:必须添加在“插件”页面的伪静态规则(即 rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last; 行)之前的任意位置。添加后需要 重载 或 关闭后再启动 Nginx后生效(仅直接重启无效)。

2、版块页帖子列表上方主题分类链接伪静态。打开 forum/forumdisplay.htm 模板,将 forum.php?mod=forumdisplay&fid=$_G[fid]&filter=typeid&typeid=$id$forumdisplayadd[typeid]{if $_GET['archiveid']}&archiveid={$_GET['archiveid']}{/if} 替换为 forum-$_G[fid]-$id-1.html

分页: 1 2 3 4 下一页
欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/2014417.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


已经有 7 条群众意见

  1. shine /2015-06-20 22:36

    你好,请问主题分类的伪静态怎么写,你在文中并未给出,谢谢! 回应

    #1
  2. 张工长shine/2015-06-21 08:14

    写了啊,你仔细看看。 回应

    #2
  3. shine张工长/2015-06-21 10:52

    嗯看到了,现在卡到了翻页伪静态上,很苦恼,按照你的教程总是列表页面空白,感觉是multi_forum定义没有生效的样子 回应

    #3
  4. 张工长shine/2015-06-21 12:11

    你是3.1版本吗?我没有在其它版本中测试过,在3.1中是没有问题的,你注意核对下,特别是下划线部分,末尾分号不要复制掉了。3.2版本应该差别不大。 回应

    #4
  5. shine张工长/2015-06-21 14:27

    嗯,是3.1。我没有完全按照你说的改,因为我不太需要精华、热门等的伪静态,所以在第七步中的 if 函数内容有删减,不知道是否是因为这个? 回应

    #5
  6. 张工长shine/2015-06-22 01:37

    那你第7步 forum_forumdisplay.php 中直接替换成以下代码试试,加个判断。

    if($_GET[‘typeid’]) {
    $multipage = multi_forum($_G[‘forum_threadcount’], $_G[‘tpp’], $page, “forum-$_G[fid]-“.$_GET[‘typeid’].’-‘, $_G[‘setting’][‘threadmaxpages’]);
    } else {
    $multipage = //这里用原来默认的代码
    } 回应

    #6
  7. 张工长 /2015-06-22 01:40

    注意以上回复中的单引号/双引号被自动替换成 中文单引号/双引号了 ,你自己批量替换一下。 回应

    #7

欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截