云服务器促销,免费安装宝塔面板!
开启左侧

[DZ教程] 怎么让Discuz!论坛的门户频道页面支持伪静态?

[复制链接]
图片素材 发表于 2017-8-30 00:19:06 | 显示全部楼层 |阅读模式

本站会员必须 邮箱验证成功后 才能发帖。马上注册查阅更多教程,下载海量资源,让你轻松玩做站

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
基于代码X3,其它版本源码,请自行验证。
' `) ]" l& k2 C- S6 g! y. F( G7 V0 r+ n$ n
Discuz后台的伪静态配置不包含门户频道页的伪静态配置。应该是考虑到频道页的URL地址变化太多的原因。下面,我们就来开发源码,加上这个功能。
$ ]; v7 [$ z% C第一步:加上语言包中的记录:1 ~3 g9 T+ f4 @+ f& F' ^
根目录下:source\language\lang_admincp.php ,找到setting_seo_rewritestatus_portal_article 这一行,大概在1500行左右,搜索一下吧。
" a3 \7 r; W) d) q! k1 d' ]4 C  a" D; ?4 w
在这句下面加上一句:
  1. 'setting_seo_rewritestatus_portal_list' => '门户频道页',
复制代码
  d* |$ C( Q) z5 M

" E6 z* |6 p$ P( |" c2 ~( O: ]  W( W1 o7 U: B6 N
第二步:在后台加上设置项
+ E; p5 |$ [, ]7 ?4 v; U$ y根目录下:source\function\function_admincp.php ,找到rewritedata函数,在if语句的,两个大括号中,加上下面两段程序
, Z) t  S4 ?, }: Y2 Z6 l. q8 W! {9 Z3 j/ U' _  b9 E/ ^
上面一段加上
) h& I, e6 D3 F0 y" }8 I- h     
  1.   if (in_array('portal_list', $_G['setting']['rewritestatus'])) {% P& h' G$ w1 B8 H
  2.             $data['search']['portal_list'] = "/" . $_G['domain']['pregxprw']['portal'] . "\?mod\=list&(amp;)?catid\=(\d+)(&page\=(\d+))?"([^\>]*)\>/e";
    0 G4 s2 g1 ~% k. D! t- e( [
  3.             $data['replace']['portal_list'] = "rewriteoutput('portal_list', 0, '\\1', '\\3', '\\5', '\\6')";2 ~5 D& c' x( C
  4.         }
    & [  \  L) r! s- Z" I
复制代码
, H6 A9 r3 g5 h; g# ~% X: s5 s4 U# V
下面一段加上# P$ [, _) {: H  A' p6 Y' ~
   
  1.    $data['rulesearch']['portal_list'] = 'list-{catid}-{page}.html';/ c* m0 I8 K1 A8 \3 ^) {2 s- v2 }
  2.         $data['rulereplace']['portal_list'] = 'portal.php?mod=list&catid={catid}&page={page}';9 o- {& R! j. {+ |. @1 u
  3.         $data['rulevars']['portal_list']['{catid}'] = '([0-9]+)';& T7 C) i: ^3 T7 L) f8 s: |  E0 ]
  4.         $data['rulevars']['portal_list']['{page}'] = '([0-9]+)';
复制代码

9 d! q+ S7 e  t" {  T) D" h2 x% H4 o5 {* G/ A9 k

& P. R9 l$ k3 O" B第三步:兼容栏目页URL地址设置
6 ]1 }7 K  o2 |0 M; d9 d6 b找到文件:5 T# k2 U" b' A6 ^
根目录source\function\function_portal.php 下的函数getportalcategoryurl
# Y6 _6 p, l! v0 f8 T& q4 [重新写成下面的代码:0 `' v% \+ E6 n$ X* A) o  ?& b
  1. function getportalcategoryurl($catid) {
    0 \( y; ^8 h3 v, o0 q
  2.     if (empty($catid))
      s9 R5 Z- e- {3 ?: i
  3.         return '';& R, z/ k3 n, K
  4.     loadcache('portalcategory');1 N" t' D4 j- @6 x
  5.     $portalcategory = getglobal('cache/portalcategory');
    * p  B4 O3 R6 ?9 J9 X. j! W2 R$ L
  6.     if ($portalcategory[$catid]) {
    - j) y* W+ }7 N( a- F2 t  Q1 e
  7.         $url = str_replace('&', '&', $portalcategory[$catid]['caturl']);5 p0 }1 l, j- q: f
  8.         $url = str_replace('&', '&', $url);
    * }1 H: _6 w# O0 R, @
  9.         $url = str_replace('http://'.$_SERVER['HTTP_HOST'].'/', '', $url);2 }$ R! \5 A- t) ^6 ^+ @) [
  10.         return $url;
    , g- D+ G9 _4 n  L3 J8 M
  11.     } else {
    8 q$ D- ?* [9 y, S1 E: g$ a
  12.         return '';
    $ |* B8 B0 H8 w0 ~. E+ l. l* A
  13.     }
      ?+ S; G: u) u( p- u8 [
  14. }
    / |. }2 a9 q& I! _( M
复制代码
8 O( Y- I9 E' `' M3 P% w
. V6 F7 G  n+ O. y+ P" z
第四步:设置前台页面URL地址切换5 C/ C! W  m- I  }. V0 i7 Z- P  [4 W4 g
根目录00php\source\function\function_core.php  这个文件中找到:函数rewriteoutput  g5 f' W( M, s8 G! |
在一串的if ... else if中加上一段- @, H1 P) x' v

' _7 ~+ E# }. ?$ P, I. P
  1. elseif ($type == 'portal_list') {7 i2 P# p0 U6 D- T4 J# B
  2.         list(,,, $id, $page, $extra) = func_get_args();; j+ _* `  M6 }# G
  3.         $r = array(
    ) M, ?  R- b! d* D& H4 `
  4.             '{catid}' => $id,
    4 C: [& P& m8 _, W' @2 c2 O1 W7 Q1 g7 f
  5.             '{page}' => $page ? $page : 1,0 W0 C* E/ [$ W+ V  @6 \
  6.         );7 D1 ^* `7 [; S2 u6 R4 B
  7.     }
    9 N7 }% R1 s, m' w
复制代码
7 Z) o7 r) F9 y! V
至此,大功告成。
当流科技-专业Discuz建站、仿站业务,专注处理discuz!论坛挂马,专注提供论坛托管维护服务! 提供Discuz论坛空间、VPS、云服务器!咨询QQ 569160956 778521512
回复

使用道具 举报

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

本版积分规则

精彩课程推荐

Discuz!论坛网盘附件免跳转下载(手机版网

主讲:当流科技 Discuz插件

抱歉,当前存在网络问题或服务器繁忙,详细错

主讲:我心枫叶 Discuz!教程

宝塔面板绑定域名无法访问后台怎么解决?

主讲:风雨兼程 服务器学院

discuz论坛搬家教程,如何搬迁到新服务器?

主讲:风雨兼程 Discuz!教程

宝塔面板phpmyadmin 数据库502 Bad Gateway

主讲:当流科技 服务器学院

Discuz!X3.3全新安装和升级后快速回复框丢

主讲:风雨兼程 Discuz!教程

宝塔面板mysql怎么用navicat 连接数据库呢

主讲:当流科技 服务器学院

Discuz! X3.4虚拟人气虚拟用户在线插件 完

主讲:执手天涯 Discuz插件

商务合作

0551-66191059
service#dangliu.net
点击这里给我发消息
dz论坛/Discuz!论坛新手

关注微信公众号

QQ扫码 加 DZ技术群