DedeCMS为文章图片自动添加ALT属性为标题(二)
在《DedeCMS为文章图片自动添加ALT属性为标题》一文中,余斗教大家如何在include/ arc.archives.class.php中添加代码来实现为图片添加alt属性为文章标题,这个方法在PHP7以上的环境中不太行,可能是织梦对PHP7.0支持不够的原因吧!
恰好在《DedeCMS使用扩展函数调用任意数据表的方法》中,说到通过自定义函数来实现我们需要的任何功能,那么,同理,我们可以用自定义函数来实现为文章图片自动添加ALT属性为标题。
首先修改/include/extend.func.php,里面的把这段代码加进去:
//文章body优化替换
function replaceurl($newurl)
{
global $dsql,$id;
//获取图片附加表imgurls字段内容进行处
$row = $dsql->GetOne(
“SELECT title FROM dede_archives where id=$id”);
//替换图片Alt为文档标题
$newurl=str_ireplace(array(
‘alt=””‘,
‘alt=\’\’
‘),’
‘,$newurl);
$newurl=preg_replace(
“@ [\s]{0,}alt[\s]{0,}=[\”‘\s]{0,}[\s\S]{0,}[\”‘\s] @isU”,
” “,$newurl);
$newurl=str_ireplace(
“<img “ ,
“<img alt=\”
“.$row[
‘title’].
“\””,$newurl);
//去掉结尾空格
$newurl=str_ireplace(
“/”,
“/”,$newurl);
$newurl=str_ireplace(
“/>”,
“/>”,$newurl);
return $newurl;
}
然后在我们需要调用文章内容的地方加上调用代码:
{dede:field.body function=
‘replaceurl(@me)’/}
最后补充,由于之前在《DedeCMS文章页去img图片width和height属性》一文中,余斗也是通过修改include/ arc.archives.class.php文件来实现去高宽属性,既然我们今天用自定义函数实现了替换alt属性,那么也可以把去高宽属性的这个功能加进去,完整代码如下:
//文章body优化替换
function replaceurl($newurl)
{
global $dsql,$id;
//获取图片附加表imgurls字段内容进行处
$row = $dsql->GetOne(
“SELECT title FROM dede_archives where id=$id”);
//去掉img的width和height
$newurl=preg_replace(
‘/style=\”width\:(.*)\”/’,
”,$newurl);
//替换图片Alt为文档标题
$newurl=str_ireplace(array(
‘alt=””‘,
‘alt=\’\’
‘),’
‘,$newurl);
$newurl=preg_replace(
“@ [\s]{0,}alt[\s]{0,}=[\”‘\s]{0,}[\s\S]{0,}[\”‘\s] @isU”,
” “,$newurl);
$newurl=str_ireplace(
“<img “ ,
“<img alt=\””.$row[
‘title’].
“\””,$newurl);
//去掉结尾空格
$newurl=str_ireplace(
“/”,
“/”,$newurl);
$newurl=str_ireplace(
“/>”,
“/>”,$newurl);
return $newurl;
}
文章内容调用代码不变!