卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章1829本站已运行4109

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

帝国CMS Tag标签伪静态,终于解决了空格、加号的问题了,老大难问题,影响同事工作效率。

1、标签、关键词 自动同步,不用手动复制 粘贴了

很简单,这里不说了

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;}//参数处理函数2function 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直接复制mysql数据库文件frm myi myd恢复数据解答
下一篇: 帝国cms批量查询失效图片并下载替换图片插件
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏