帝国cms给图片img标签自动添加alt为文章标题所遇到的问题

如题:帝国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>&nbsp;<img alt=”\&quot;完美女神曾水私房秀翘臀美胸很销魂\&quot;” src=”\&quot;/d/file/2017-04-08/684235e4989c7faed8e2d30f800590ae.jpg\&quot;” border=”\&quot;000\&quot;” /><br />
[!–empirenews.page–]</p>
<p align=”\&quot;center\&quot;”><img alt=”\&quot;完美女神曾水私房秀翘臀美胸很销魂\&quot;” src=”\&quot;/d/file/2017-04-08/75cc5bcd84940a0414060cffc41c2783.jpg\&quot;” border=”\&quot;000\&quot;” /></p>

这是我保存之后出现的多了一个:\&quot; 这个在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代码的,所以还是需要去修改上面的说的哪一步的。自己去看!

《帝国cms给图片img标签自动添加alt为文章标题所遇到的问题》上有1条评论

发表回复