帝国CMS Tag标签伪静态,终于解决了空格、加号的问题了,老大难问题,影响同事工作效率。
1、标签、关键词 自动同步,不用手动复制 粘贴了
教程在这里 https://www.zzbang.cn/cms/phome/3987.html 很简单,这里不说了
2、Tag标签伪静态的空格问题
我不知道动态调用是否有这个问题,这里说伪静态下,因为伪静态是最好体验选择
a、如果带空格的标签添加不上,后台tag管理里看不到
在/e/class/t_function.php文件里 搜一下
帝国cms对tagname用RepPostVar做了过滤,这是为了安全和体验,在第一个函数里,向我那样注释掉空格过滤代码,这样可以添加文章的适合 能够把带空格的标签写进数据库。
//参数处理函数
function RepPostVar($val){
if($val!=addslashes($val))
{
exit();
}
CkPostStrChar($val);
$val=str_replace("%","",$val);
//$val=str_replace(" ","",$val);
$val=str_replace("`","",$val);
$val=str_replace("\t","",$val);
$val=str_replace("%20","",$val);
$val=str_replace("%27","",$val);
$val=str_replace("*","",$val);
$val=str_replace("'","",$val);
$val=str_replace("\"","",$val);
$val=str_replace("/","",$val);
$val=str_replace(";","",$val);
$val=str_replace("#","",$val);
$val=str_replace("--","",$val);
$val=RepPostStr($val,1);
$val=addslashes($val);
//FireWall
FWClearGetText($val);
return $val;
}
//参数处理函数2
function RepPostVar2($val){
if($val!=addslashes($val))
{
exit();
}
CkPostStrChar($val);
$val=str_replace("%","",$val);
$val=str_replace("`","",$val);
$val=str_replace("\t","",$val);
$val=str_replace("%20","",$val);
$val=str_replace("%27","",$val);
$val=str_replace("*","",$val);
$val=str_replace("'","",$val);
$val=str_replace("\"","",$val);
$val=str_replace("/","",$val);
$val=str_replace(";","",$val);
$val=str_replace("#","",$val);
$val=str_replace("--","",$val);
$val=RepPostStr($val,1);
$val=addslashes($val);
//FireWall
FWClearGetText($val);
return $val;
}
b、完成了a,带空格的标签,比如“荣耀Magic4 Pro”可以添加到数据库里,但是,我遇到的问题是,前后台标签显示正常,但是,url却是e/tag/“荣耀Magic4+Pro”,这显然是错误的地址,也无法调用到文章列表。
接下来,一分析,发现问题了,是Urlencode的问题,这个函数将空格给转成加号+了,那咋办?
打开e/class/connect.php
//返回TAGS列表伪静态
function eReturnRewriteTagsUrl($tagid,$tagname,$ecms=0){
global $public_r;
$tagname=urlencode($tagname);
if(empty($public_r['rewritetags']))
{
$r['pageurl']=$public_r['newsurl']."e/tags/?tagname=".$tagname;
$r['rewrite']=0;
}
else
{
if($ecms==1)
{
$r['pageurl']=$public_r['newsurl'].str_replace(array('[!--tagname--]','[!--page--]'),array($tagname,0),$public_r['rewritetags']);
$r['pageurl']=str_replace('+','%20',$r['pageurl']);
}
else
{
$r['pageurl']=$public_r['newsurl'].str_replace('[!--tagname--]',$tagname,$public_r['rewritetags']);
$r['pageurl']=str_replace('+','%20',$r['pageurl']);
}
$r['rewrite']=1;
}
return $r;
}
在输出url的函数里,用str_replace函数再修正回来,这样,就一切搞定了,不错吧,
标签:伪静态 帝国cms