quanshiyinian 发表于 2014-11-18 17:28:50

仿地宝网URL版块目录化伪静态和贴子目录化伪静态

discuz默认是提供简单的扁平的树型网状结构优化的,而有些用户可能更希望实现版块目录化甚至帖子目录化,那么默认的规则是无法实现的,大家不了解伪静态的可以先看看Discuz! X2.5论坛不同环境配置伪静态的方法,然后再结合下面的方法来修改就可以实现目录化伪静态了。

此方法需要修改源码,修改前请备份好修改文件

首先
打开source\function下的function_core.php
找到
if($type == 'forum_forumdisplay') {
      list(,,, $fid, $page, $extra) = func_get_args();
      $r = array(
            '{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
            '{page}' => $page ? $page : 1,
      );
    } elseif($type == 'forum_viewthread') {
      list(,,, $tid, $page, $prevpage, $extra) = func_get_args();
      $r = array(
            '{tid}' => $tid,
            '{page}' => $page ? $page : 1,
            '{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
      );



if($type == 'forum_forumdisplay') {
      list(,,, $fid, $page, $extra) = func_get_args();
      $r = array(
            '{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
            '{page}' => $page ,
      );
    } elseif($type == 'forum_viewthread') {      
      list(,,, $tid, $page, $prevpage, $extra) = func_get_args();
      $fid = DB::result_first("SELECT fid FROM ".DB::table('forum_thread')." WHERE tid = '$tid'");
      $r = array(
            '{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
            '{tid}' => $tid,
            '{page}' => $page ,
            '{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
      );然后进入网站后台--全局->''seo设置"->"URL静态化"
在"论坛主题列表页"的格式中填写:{fid}/{page}
在"论坛主题内容页"的格式中填写:{fid}/m{tid}/{page}

然后工具,更新缓存,即实现了版块目录化,贴子目录化,在"论坛"-"版块管理"中的"绑定别名"即是版块目录名:然后查看伪静态规则,把规则覆盖之前的默认伪静态规则,再测试即可完成版块和帖子的目录化伪静态。专题想目录伪静态请看:Discuz x论坛专题目录化伪静态设置方法。
页: [1]
查看完整版本: 仿地宝网URL版块目录化伪静态和贴子目录化伪静态