标签: 帝国

帝国cms添加图片alt

文章一:帝国cms中“管理页面关键字”功能问题解决图片ALT被替换的办法

为了加大搜索引擎对自己网站的收录,我们经常会使用内容关键字来让用户或是搜索引擎更好的查阅,但有时候图片里ALT值里面的字被内容关键字的链接更改,导致图片无法正常显示,给我们的内容和美观都带来了麻烦。下面说说我的解决办法:

方法一、对于已有内容修改
打开后台依次找到:栏目管理-其他管理-批量替换字段值,
操作栏目选择你要替换的栏目,也可以选择所有栏目,替换字段,选择newstext(因为我们出问题的是内容页),
原文字里输: $value=addslashes(CopyImg(stripSlashes($value),$add[copyimg],$add[copyflash],$add[classid],$add[qz_url],$username,$add[‘id’],$add[‘filepass’],$add[‘mark’]));

替换为:

                  $value=addslashes(CopyImg(stripSlashes($value),$add[copyimg],$add[copyflash],$add[classid],$add[qz_url],$username,$add['id'],$add['filepass'],$add['mark']));
$value = str_ireplace(array('alt=""','alt=\'\''),'',$value);
$value = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU"," ",$value);
$value = str_ireplace("\\\"$add[title]\\\"

2、图片alt防关键词链接,基于前一个修改基础上
修改e/class/functions.php中:

$add[newstext]=ReplaceKey($add[newstext]);

替换为:

$add[newstext]=str_ireplace($add[title],"[!--newstext.temp--]",$add[newstext]);
$add[newstext]=ReplaceKey($add[newstext]);
$add[newstext]=str_ireplace("[!--newstext.temp--]",$add[title],$add[newstext]);

后台功能位置:其他管理=》新闻系统相关=》管理内容关键字
关键词匹配次数设置:系统设置=》系统参数设置=》信息设置=》信息内容关键字重复替换

转自http://blog.sina.com.cn/s/blog_66a0738b0100o4s5.html

文章二:管理内容关键字对于alt中的图片说明被关键词替换图片无法显示

这个办法是对KissVenus发的解决方法的补充
有的图片不止有alt,还有title 我用了KissVenus的办法解决了alt但是title不能解决,所以自己就修改了下,能用了,所以发上来,本人水平有限,所以只能改成这个样子如果有更好的代码请分享给大家 至于那些会好代码的又不去分享的BS中
KissVenus 原帖地址 http://bbs.phome.net/showthread-13-119120-0.html

如果更换了后登陆后台出现500错误 那是修改错误,请修改前备份这个文件
1、远程及本地图片的alt自动更改为当前文章的标题

修改e/class/functions.php
要替换两处,注意必须2处都要更换

$value=addslashes(CopyImg(stripSlashes($value),$add[copyimg],$add[copyflash],$add[classid],$add[qz_url],$username,$add['id'],$add['filepass'],$add['mark']));

替换为

$value=addslashes(CopyImg(stripSlashes($value),$add[copyimg],$add[copyflash],$add[classid],$add[qz_url],$username,$add['id'],$add['filepass'],$add['mark']));
//hack KissVenus
$value = str_ireplace(array('alt=""','alt=\'\''),'',$value);
$value = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU"," ",$value);
$value = str_ireplace("\\\"$add[title]\\\"

2、图片alt防关键词链接,基于前一个修改基础上

修改e/class/functions.php

$add[newstext]=ReplaceKey($add[newstext]);

替换为

//KissVenus
$add[newstext]=str_ireplace($add[title],"[!--newstext.temp--]",$add[newstext]);
$add[newstext]=ReplaceKey($add[newstext]);
$add[newstext]=str_ireplace("[!--newstext.temp--]",$add[title],$add[newstext]);
//KissVenus

转自http://blog.sina.com.cn/s/blog_66a0738b0100o4tg.html

另一个方法,6.0以后不知道能否使用,如下

在functions.php修改gethtml()函数。
加入

$newstempstr=str_replace("

灵感来自http://bbs.phome.net/showthread-13-145997-0.html

帝国cms中TAGS分页太多

用的是 [!–show.listpage–]

解:修改e/tags/index.php

$page_line=16;//每页显示链接数

帝国tag链接显示为ID连接方式

在使用帝国CMS的过程中,发现启用tag后,连接的地址中有中文,随即想到用tagid来作为访问地址,避免中文对收录的影响。

使用情况为设置cid为selfinfo的情况下,如果设定了cid,此方法无效。

即[showtags]'selfinfo',10,10,'tagid desc',0,'','   ',0,''[/showtags]

1、修改e\class\t_functions.php文件中sys_eShowTags函数

//显示TAGS
function sys_eShowTags($cid,$num=0,$line=0,$order='',$isgood='',$isgoodshow='',$showjg='',$shownum=0,$cs=''){
	global $empire,$dbtbpre,$public_r,$navinfor;
	$str='';
	if(empty($showjg))
	{
		$showjg='   ';
	}
	$ln=0;
	if($cid=='selfinfo')
	{
		if(empty($navinfor['infotags']))
		{
			return '';
		}
		$jg='';
		$r=explode(',',$navinfor['infotags']);		
		$count=count($r);	
		for($i=0;$i<$count;$i++)
		{
		$sql=$empire->query("select tagid from {$dbtbpre}enewstags where tagname='".$r[$i]."'");
		$rtagid=$empire->fetch($sql);
			$ln++;
			$br='';
			if($line)
			{
				if($ln%$line==0)
				{
					$br='
'; } } $str.=$jg.''.$r[$i].''.$br; //$str.=$jg.''.$r[$i].''.$br; $jg=$br?'':$showjg; } } else { $and=''; $where=''; if($cid) { $where=strstr($cid,',')?"cid in ($cid)":"cid='$cid'"; $and=' and '; } if($isgood) { $where.=$and.'isgood=1'; } if($where) { $where=' where '.$where; } $order=$order?' '.$order:' tagid desc'; $limit=''; if($num) { $limit=' limit '.$num; } //推荐标红 $gfont1=''; $gfont2=''; if($isgoodshow) { if(strstr($isgoodshow,'r')) { $gfont1=''; $gfont2=''; } if(strstr($isgoodshow,'s')) { $gfont1=$gfont1.''; $gfont2=''.$gfont2; } } $jg=''; $snum=''; $sql=$empire->query("select tagid,tagname,num,isgood from {$dbtbpre}enewstags".$where." order by".$order.$limit); while($r=$empire->fetch($sql)) { if($shownum) { $snum='('.$r[num].')'; } $font1=''; $font2=''; if($isgoodshow&&$r[isgood]) { $font1=$gfont1; $font2=$gfont2; } $ln++; $br=''; if($line) { if($ln%$line==0) { $br='
'; } } $str.=$jg.''.$font1.$r[tagname].$snum.$font2.''.$br; $jg=$br?'':$showjg; } } echo $str; }

其实其中加入了三句代码,也可自行修改。

$sql=$empire->query("select tagid from {$dbtbpre}enewstags where tagname='".$r[$i]."'");
$rtagid=$empire->fetch($sql);

$str.=$jg.''.$r[$i].''.$br;

2、加入伪静态规则。
nginx下伪静态为

rewrite "^/tags\/([0-9]+)\.html$" /e/tags/?tagid=$1 last;

完成后又发现tag列表项过多时,会有导航栏,导航栏内的链接为动态形式,需要修改,方法如下。
1、修改e/tag/index.php
172行

$listpage=page1($num,$line,$page_line,$start,$page,$search);

改成

$listpage=pagetag($num,$line,$page_line,$start,$page,$tagid);

2、修改e/class/connect.php
复制一份函数function page1(),命名为function pagetag()
修改
function pagetag()函数如下

//TAGS分页
function pagetag($num,$line,$page_line,$start,$page,$tagid){
	global $fun_r;
	if($num<=$line)
	{
		return '';
	}
	$tagid='_'.$tagid;
	$url='index';
	$snum=2;//最小页数
	$totalpage=ceil($num/$line);//取得总页数
	$firststr=' '.$num.'   ';
	//上一页
	if($page<>0)
	{
		$toppage=''.$fun_r['startpage'].' ';
		$pagepr=$page-1;
		$prepage=''.$fun_r['pripage'].'';
	}
	//下一页
	if($page!=$totalpage-1)
	{
		$pagenex=$page+1;
		$nextpage=' '.$fun_r['nextpage'].'';
		$lastpage=' '.$fun_r['lastpage'].'';
	}
	$starti=$page-$snum<0?0:$page-$snum;
	$no=0;
	for($i=$starti;$i<$totalpage&&$no<$page_line;$i++)
	{
		$no++;
		if($page==$i)
		{
			$is_1="";
			$is_2="";
		}
		else
		{
			$is_1='';
			$is_2="";
		}
		$pagenum=$i+1;
		$returnstr.=" ".$is_1.$pagenum.$is_2;
	}
	$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
	return $returnstr;
}

3、nginx伪静态规则

rewrite "^/tags\/index\_([0-9]+)\_([0-9]+)\.html$" /e/tags/index.php?page=$2&tagid=$1&line=25&tempid=1 last;

备注:本来想采用输出的内容$returnstr,用正则替换的方法改变链接方式,结果发现无效果,屡试不成功,就放弃了,代码如下。

e/class/connect.php的pagetag函数中,最后一部分改成

$returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
$aaaaa='/e\/tags\/index\.php\?page\=([0-9]+)\&tagid\=([0-9]+)\&line\=25\&tempid\=1/';
$bbbbb='/tags/index_$2_$1.html';
$returnstr=preg_replace($aaaaa,$bbbbb,$returnstr);
return $returnstr;
实现转换成的模式为
tags/index_tagid_page.html
原连接模式为
/e/tags/index.php?page=1&tagid=2&line=25&tempid=1
转换伪静态
rewrite "^/tags\/index\_([0-9]+)\_([0-9]+)\.html$" /e/tags/index.php?page=$2&tagid=$1&line=25&tempid=1 last;

修改帝国文章路径为目录加ID

帝国6.5更改了内容页目录存放形式.如何更改旧文章生成路径?

可以用代码直接改数据库,论坛里找到了一段:

update phome_ecms_表 set newspath=''

但这个的形式是直接将路径改为:目录/ID.html

帝国官方sitemap插件伪静态

其实发现帝国cms还是有些很不人性化的地方,比如tag和sitemap,这种大众的功能不能够做好一点点么?帝国的插件社区应该壮大一点才是啊,这么好的cms应该有很多人推动才是。

回归正题,想修改成的格式为
主页产生格式sitemap.xml
栏目产生格式sitemap1.xml

首先在官方插件的sitemap.php中修改了输出格式。
具体的是把

sitemap.php?classid=

修改为

sitemap.xml

相应的nginx伪静态如下

rewrite "^/sitemap\.xml$" /sitemap.php last;
rewrite "^/sitemap([0-9])\.xml$" /sitemap.php?classid=$1 last;

这里提供修改好的官方sitemap.php下载

帝国官方sitemap插件moper修改版
帝国官方sitemap插件

使用方法
1、将sitemap.php文件上传到帝国安装根目录中
2、在robots.txt文件中加入下面这行:
sitemap: http://你的域名/sitemap.xml