帝国CMS Tag标签伪静态,终于解决了空格、加号的问题了。。

帝国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函数再修正回来,这样,就一切搞定了,不错吧,

柳华芳
柳华芳

奔向光明之地

文章: 1202
订阅评论
提醒
guest

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x