如题:帝国cms给图片img标签自动添加alt为文章标题所遇到的问题
我就不想多说什么, 主要是用于记录,怕自己忘记了。
首先声明我的是帝国cms7.2 的版本
我用了两个方法来设置:
第一个(这个方法我在本地测试是成功的,但是我放到阿里云ECS CentOS 7.3 64位的云服务器就出现了问题,具体问题我下面会说):
第一步:
打开/e/class/userfun.php文件最后的?>前面添加以下代码实现帝国CMS自动alt标签。
//帝国CMS给文章正文中的图片自动加alt
function user_AddImgAlt($mid,$f,$isadd,$isq,$value,$cs){
$value=stripSlashes($value);
$title=stripSlashes($_POST[‘title’]);
$title=str_replace(‘”‘,”,$title);
$zz2=”/\<(img|IMG) (.?)alt=\”(.?)\”(.?)>/is”;
$text=preg_replace($zz2,”<\1 \2\4>”,$value);
$zz1=”/\<(img|IMG) (.?)>/is”;
$text=preg_replace($zz1,”<\1 alt=\”{$title}\” \2>”,$text);
return addslashes($text);
}
如图:
第二步:
登陆帝国CMS后台依次打开:系统-数据表与系统模型-管理数据表-管理字段(选择相应的数据表,在这里我是修改新闻系统数据表,请自行选择)
然后选择我框起来的那个 点击修改:
如图填上:user_AddImgAlt
然后提交就好了。
设置完这个确实是会有效果,但是会受到关键词的影响会导致你的alt出现html代码,所以完整的应该是这样的:
我找到e\class\下面的functions.php文件修改:
应该是在485行
$newstext=empty($public_r[repkeynum])?str_ireplace($r[keyname],'<a href=’.$r[keyurl].’ target=_blank class=infotextkey>’.$r[keyname].'</a>’,$newstext):preg_replace(‘/’.$r[keyname].’/i’,'<a href=’.$r[keyurl].’ target=_blank class=infotextkey>’.$r[keyname].'</a>’,$newstext,$public_r[repkeynum]);
变成:
$newstext=empty($public_r[repkeynum])?str_replace($r[keyname],”.$r[keyname].”,$newstext):preg_replace(‘/(?!<[^>]*)’.$r[keyname].'(?![^<]*>)/’,”.$r[keyname].”,$newstext,$public_r[repkeynum]);
如图:
本来是这样的:
变成这样:
这样就好了。
然后就是关于我上面说到的放到阿里云就不行了的问题:
会出现这样的问题
<p> <img alt=”\"完美女神曾水私房秀翘臀美胸很销魂\"” src=”\"/d/file/2017-04-08/684235e4989c7faed8e2d30f800590ae.jpg\"” border=”\"000\"” /><br />
[!–empirenews.page–]</p>
<p align=”\"center\"”><img alt=”\"完美女神曾水私房秀翘臀美胸很销魂\"” src=”\"/d/file/2017-04-08/75cc5bcd84940a0414060cffc41c2783.jpg\"” border=”\"000\"” /></p>
这是我保存之后出现的多了一个:\" 这个在html里面是个双引号,不是什么怎么产生的,但是我就修改了那些东西,所以最终确定是在做了第一步之后出现的。
所以就出现了另外一个给alt自动添加文章标题的方法(这个方法就没有那个问题,然后也是需要做上面的受到关键词影响的那一步的):
一样打开/e/class/userfun.php文件最后的?>前面添加以下代码实现帝国CMS自动alt标签。
//替换正文IMG里的ALT内容
function
user_imgalt(
$mid
,
$f
,
$isadd
,
$isq
,
$value
,
$cs
){
$title
=
$_POST
[
'title'
];
$htmls
=
$value
;
$pattern
=
"/<img[^>]+>/"
;
preg_match_all(
$pattern
,
$htmls
,
$matches
);
for
(
$i
=0;
$i
<=
count
(
$matches
[0]);
$i
++) {
preg_match_all(
"/alt=\".+?\"/"
,
$matches
[0][
$i
],
$altimg
);
$t_alt
=
count
(
$altimg
[0]);
if
(
$t_alt
==0){
$htmls
=
str_replace
(
"<img"
,
"<img alt=\"{$title}\""
,
$htmls
);
}
}
return
$htmls
;
}
登陆帝国CMS后台依次打开:系统-数据表与系统模型-管理数据表-管理字段(选择相应的数据表,在这里我是修改新闻系统数据表,请自行选择)
然后选择我框起来的那个 点击修改:
如图填上:user_imgalt
点击提交就好。
记住这个也是会受到关键词的影响会导致你的alt出现html代码的,所以还是需要去修改上面的说的哪一步的。自己去看!
有空搞一下