基于代码 X3
,其它版本源码,请自行验证。
Discuz
后台的伪静态配置不包含门户频道页的伪静态配置。应该是考虑到频道页的 URL
地址变化太多的原因。下面,我们就来开发源码,加上这个功能。
第一步:加上语言包中的记录:
- 根目录下:
source
\language
\lang_admincp
.php
,找到setting_seo_rewritestatus_portal_article
这一行,大概在 1500 行左右,搜索一下吧。
在这句下面加上一句:’setting_seo_rewritestatus_portal_list
’ => ‘门户频道页’,
第二步:在后台加上设置项
- 根目录下:
source
\function
\function_admincp
.php
,找到rewritedata
函数,在if
语句的,两个大括号中,加上下面两段程序
上面一段加上
if
(in_array
(‘portal_list
’, $_G
[‘setting
’][‘rewritestatus
’])) {
$data
[‘replace
’][‘portal_list
’] = “rewriteoutput
(‘portal_list
’, 0, ‘\\1’, ‘\\3’, ‘\\5’, ‘\\6’)”;
}
下面一段加上
$data
[‘rulesearch
’][‘portal_list
’] = ‘list
-{catid
}-{page
}.html
’;
$data
[‘rulevars
’][‘portal_list
’][‘{catid
}’] = ‘([0-9]+)’;
$data
[‘rulevars
’][‘portal_list
’][‘{page
}’] = ‘([0-9]+)’;
第三步:兼容栏目页 URL
地址设置
找到文件:
- 根目录
source
\function
\function_portal
.php
下的函数getportalcategoryurl
重新写成下面的代码:
function
getportalcategoryurl
($catid
) {
if
(empty
($catid
))
return
”;
loadcache
(‘portalcategory
’);
$portalcategory
= getglobal
(‘cache
/portalcategory
’);
if
($portalcategory
[$catid
]) {
$url
= str_replace
(‘http
://’.$_SERVER
[‘HTTP_HOST
’].’/’, ”, $url
);
return
$url
;
} else
{
return
”;
}
}
第四步:设置前台页面 URL
地址切换
- 根目录 00php\
source
\function
\function_core
.php
这个文件中找到:函数rewriteoutput
在一串的 if
… else
if
中加上一段
elseif
($type
== ‘portal_list
’) {
list
(,,, $id
, $page
, $extra
) = func_get_args
();
$r
= array
(
‘{catid
}’ => $id
,
‘{page
}’ => $page
? $page
: 1,
);
}
至此,大功告成。
转载请注明:汇站网 » Discuz教程:如何让你的门户频道页支持伪静态(二次开发)