老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
39,802

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

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

8、帖子内容页标题前方主题分类链接伪静态化。打开 forum/viewthread.htm 文件,查找:

<a href="forum.php?mod=forumdisplay&fid=$_G[fid]&filter=typeid&typeid=$_G[forum_thread][typeid]">[{$_G['forum']['threadtypes']['types'][$_G['forum_thread']['typeid']]}]</a>

替换为:

[<a href="forum-{$_G[fid]}-{$_G[forum_thread][typeid]}-1.html">{$_G['forum']['threadtypes']['types'][$_G['forum_thread']['typeid']]}</a>]

为使搜索引擎可以收录主题分类链接,可将上方的 <!--{if !IS_ROBOT && ($_G['forum']['threadtypes']['listable'] || $_G['forum']['status'] == 3)}--> 修改为 <!--{if $_G['forum']['threadtypes']['listable'] || $_G['forum']['status'] == 3}-->

9、版块主题列表页筛选与排序链接伪静态化。打开 forum/forumdisplay_list.htm 模板,搜索:

<!--{if !IS_ROBOT}--> 从它开始(包括它)一直到 <!--{if $multipage && $filter != 'hot'}--> 之前的 <!--{/if}--> 整段删除(这是筛选功能的弹出菜单,不再需要,我们下面直接列出菜单,注意:将不再保留按天数筛选的功能)。

搜索 <div class="tf"> ,此它开始(包括它)一直到 <!--{hook/forumdisplay_filter_extra}--> 下面的 </div> 整段替换为:

<div class="tf" style="padding-left:5px;">
<span id="atarget" {if $_G['cookie']['atarget'] > 0}onclick="setatarget(-1)" class="y atarget_1"{else}onclick="setatarget(1)" class="y"{/if} title="{lang new_window_thread}">{lang new_window}</span>
主题筛选:
<a href="forum-$_G[fid]-{if $_GET['orderby'] == 'dateline'}n{elseif $_GET['orderby'] == 'lastpost'}l{elseif $_GET['orderby'] == 'replies'}r{elseif $_GET['orderby'] == 'views'}v{/if}1.html" rel="nofollow" style="color:#369;{if !preg_match("/(heat|digest|specialtype)/i", $_GET['filter'])}font-weight:bold;{/if}">全部</a>
<a href="forum-$_G[fid]-h1.html" rel="nofollow" style="color:#369;{if $_GET['filter'] == 'heat'}font-weight:bold;{/if}">热帖</a>
<a href="forum-$_G[fid]{if $_GET['typeid']}-$_GET['typeid']{/if}-d{if $_GET['orderby'] == 'dateline'}n{elseif $_GET['orderby'] == 'lastpost'}l{elseif $_GET['orderby'] == 'replies'}r{elseif $_GET['orderby'] == 'views'}v{/if}1.html" rel="nofollow" style="color:#369;{if $_GET['filter'] == 'digest'}font-weight:bold;{/if}">精华</a>&nbsp;
排序:
<a href="forum-$_G[fid]{if $_GET['typeid']}-$_GET['typeid']{/if}-{if $_GET['filter'] == 'digest'}d{/if}l1.html" rel="nofollow" style="color:#369;{if $_GET['orderby'] == 'lastpost'}font-weight:bold;{/if}">最近回复</a>
<a href="forum-$_G[fid]{if $_GET['typeid']}-$_GET['typeid']{/if}-{if $_GET['filter'] == 'digest'}d{/if}n1.html" rel="nofollow" style="color:#369;{if $_GET['orderby'] == 'dateline'}font-weight:bold;{/if}">最新帖子</a>
<a href="forum-$_G[fid]{if $_GET['typeid']}-$_GET['typeid']{/if}-{if $_GET['filter'] == 'digest'}d{/if}r1.html" rel="nofollow" style="color:#369;{if $_GET['orderby'] == 'replies'}font-weight:bold;{/if}">最多回帖</a>
<a href="forum-$_G[fid]{if $_GET['typeid']}-$_GET['typeid']{/if}-{if $_GET['filter'] == 'digest'}d{/if}v1.html" rel="nofollow" style="color:#369;{if $_GET['orderby'] == 'views'}font-weight:bold;{/if}">最多查看</a>
<!--{if empty($_G['forum']['picstyle']) && $_GET['orderby'] == 'lastpost' && (!$_G['setting']['forumseparator'] || !$separatepos) && !$_GET['filter']}-->
<a href="javascript:;" onclick="checkForumnew_btn('{$_G['fid']}')" title="{lang showupgrade}" class="forumrefresh"></a>
<!--{/if}-->
<span id="clearstickthread" style="display: none;">
<span class="pipe">|</span>
<a href="javascript:;" onclick="clearStickThread()" class="xi2"">恢复隐藏置顶</a>
</span>
<!--{hook/forumdisplay_filter_extra}-->
</div>

将 {lang title} 替换为: <div class="tf" style="padding-left:5px;">主题列表</div>

10、最后,在根目录 robots.txt 文件中添加:

Disallow: /forum-*h*.html
Disallow: /forum-*d*.html
Disallow: /forum-*l*.html
Disallow: /forum-*n*.html
Disallow: /forum-*r*.html
Disallow: /forum-*v*.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://"否则将被拦截