邵阳网站制作:解决织梦调用自定义图片地址出错
邵阳网站制作过程中出现织梦调用自定义图片地址出错,有两种情况,一种是列表页调用新增图片字段,用field调用前端显示的不是纯图片路径,含有li、a等前端标签,这种情况好解决,我们只需要找到:/templets/system/channel_article_image.htm文件,将里面的所有内容都删除,只留下[field:imgsrc/],重新生成一下就已经解决了。
另外一种情况复杂一点,使用正常的调用自定义字段方法 如
{dede:arclist typeid='9' row='15' orderby='pubdate' addfields='youhuaanlilogo' channelid='1'}
[field:youhuaanlilogo/]
{/dede:arclist}
显示的内容是
{dede:img text='' width='254' height='138'} /uploads/161027/1-16102G12Z1930.png {/dede:img}
但我们想要的不是这种格式。解决方法如下
1>创建自定义函数
打开 /include/extend.func.php 文件(注:这个文件就是系统预留的自定义函数接口文件,主要用于二次开发用的。如果你是老版本,默认没有这个文件,自己创建一个PHP文件即可)
// 获取 'img-图片' 附加字段图片地址
// 针对 '{dede:img text='' width='2534' height='1138'} /uploads/161027/1-16102G12Z1930.png {/dede:img}' 格式
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;
}
}
2>调用我们创建的自定义函数
[field:自定义图片字段名 function="GetOneImgUrl(@me,显示类型)"/]
比如:我们的自定义图片字段名为 imgurl ,那么调用方式有以下两种:
[field:imgurl function='GetOneImgUrl(@me,0)'/] <!--调用图片的信息,自动调用宽度和高度(已包含Html代码的<img />标签)-->
[field:imgurl function='GetOneImgUrl(@me,1)'/] <!--只调用图片地址,一般可用于背景图嵌套-->