对于用过dedecms的朋友,添加图片字段的时候,调用时会显示{dede:img text='' width='300' height='150'} /uploads/101018/242323.jpg{/dede:img}的错误提示。
错误产生的原因是因为dedecms处理图片的方式引起的,如何解决呢,有可能新的dedecms中已经解决这个问题,如果没有,你可以打开 /include/extend.func.php文件,在里面添加
function GetOneImgUrl($img,$ftype=1){
if($img <> ''){
$dtp = new DedeTagParse();
$dtp->LoadSource($img);
if(is_array($dtp->CTags)){
foreach($dtp->CTags as $ctag){
if($ctag->GetName()=='img'){
$width = $ctag->GetAtt('width');
$height = $ctag->GetAtt('height');
$imgurl = trim($ctag->GetInnerText());
$img = '';
if($imgurl != ''){
if($ftype==1){
$img .= $imgurl;
}
else{
$img .= '<img src="'.$imgurl.'" width="'.$width.'" height="'.$height.'" />';
}
}
}
}
}
$dtp->Clear();
return $img;
}
}
[field:自定义图片字段名 function="GetOneImgUrl(@me,显示类型)"/]
比如:我们的自定义图片字段名为 imgurl ,那么调用方式有以下两种:
引用 [field:imgurl function='GetOneImgUrl(@me,0)'/] <!--调用图片的信息,自动调用宽度和高度(已包含Html代码的<img />标签)-->
[field:imgurl function='GetOneImgUrl(@me,1)'/] <!--只调用图片地址,一般可用于背景图嵌套-->
经过这些操作,图片已经可以正常显示了,但是你会发现在后台更新栏目时,会显示错误:
解决的方法是:
把include/taglib/img.lib.php/中的
//$innerTmp = $arcTag->GetInnerText(); 替换成
$innerTmp = ($arcTag=="") ? trim($arcTag) : trim($arcTag->GetInnerText());
这样就可以正常使用图片字段了,希望我的讲解可以帮助到大家。
首发:宁波律动团队博客:http://nblvdong.s3.7ga.net/blog/