老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
39,804

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

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

6、当处于某分类时,针对搜索引擎隐藏帖子列表中大量重复的主题分类名称及其链接(SEO)。打开 forum/forumdisplay_list.htm 模板,将 $thread[typehtml] 替换为:

<!--{if !(IS_ROBOT && $_GET['typeid'])}-->$thread[typehtml]<!--{/if}-->

7、当处于主题分类时,主题列表翻页链接伪静态化。

打开 source/module/forum/forum_forumdisplay.php 文件,查找:

$multipage = multi($_G['forum_threadcount'], $_G['tpp'], $page, "forum.php?mod=forumdisplay&fid=$_G[fid]".$forumdisplayadd['page'].($multiadd ? '&'.implode('&', $multiadd) : '')."$multipage_archive", $_G['setting']['threadmaxpages']);

将其替换为:

if($_GET['typeid']) {
$url_typeid = $_GET['typeid'].'-';
}
if($_GET['filter'] == 'digest') {
$url_filter = 'd';
} elseif($_GET['filter'] == 'heat') {
$url_filter = 'h';
}
if($_GET['filter'] && $_GET['filter'] != 'typeid') {
if($_GET['orderby'] == 'dateline') {
$url_orderby = 'n';
} elseif($_GET['orderby'] == 'lastpost') {
$url_orderby = 'l';
} elseif($_GET['orderby'] == 'replies') {
$url_orderby = 'r';
} elseif($_GET['orderby'] == 'views') {
$url_orderby = 'v';
}
}
$multipage = multi_forum($_G['forum_threadcount'], $_G['tpp'], $page, "forum-$_G[fid]-".$url_typeid.$url_filter.$url_orderby, $_G['setting']['threadmaxpages']);

打开 source/function/function_core 文件,
在 function simplepage($num, $perpage, $curpage, $mpurl) { 前面增加一段(定义multi_forum):

function multi_forum($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = FALSE, $simple = FALSE, $jsfunc = FALSE) {
return $num > $perpage ? helper_page_forum::multi($num, $perpage, $curpage, $mpurl, $maxpages, $page, $autogoto, $simple, $jsfunc) : '';
}

进入 source/class/helper/ 目录,将 helper_page.php 复制一份命名为 helper_page_forum.php 。并依次修改 helper_page_forum.php 文件中的以下部分:

将 helper_page 修改为 helper_page_forum (共两处,其中文件头注释中的那处无关紧要);
将 $pagevar = 'page='; 修改为 $pagevar = ''; ;

将 $jsurl = $mpurl.(strpos($mpurl, '{page}') !== false ? '\'.replace(\'{page}\', this.value == 1 ? \'\' : this.value)': $pagevar.'\'+this.value;').'; doane(event);'; 修改为 $jsurl = substr($mpurl, 0, -1).(strpos($mpurl, '{page}') !== false ? '\'.replace(\'{page}\', this.value == 1 ? \'\' : this.value)': $pagevar.'\'+this.value').'+\'.html\'; doane(event);'; (此项操作使手动输入页码翻页时链接静态化);

将 return $mpurl.$separator.$pagevar.$page; 修改为 return substr($mpurl, 0, -1).$separator.$pagevar.$page.'.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://"否则将被拦截