在使用Dedecms进行内容管理时,自定义图片字段的处理是一个常见的需求。本文将详细介绍如何通过创建自定义函数来正确调用图片字段,并解决图片地址格式不正确的问题。
在实际操作中,有些用户发现通过自定义列表获取的图片字段并非正确的图片地址,而是类似以下格式:
{dede:img text='' width='270' height='129'} /uploads/101017/1-10101H21F54P.gif {/dede:img}
这种格式显然无法直接显示图片,因此需要采取特定的方法来解决问题。
为了解决这一问题,我们需要创建一个自定义函数。以下是具体步骤:
1. 创建自定义函数
打开 /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 .= '
';
}
}
}
}
}
$dtp->Clear();
return $img;
}
}
2. 函数调用方法
该函数可以通过以下方式调用:
[field:自定义图片字段名 function="GetOneImgUrl(@me,显示类型)"/]
例如,如果自定义图片字段名为 imgurl ,那么有两种调用方式:
[field:imgurl function='GetOneImgUrl(@me,0)'/]
[field:imgurl function='GetOneImgUrl(@me,1)'/]
【示例演示】
1. 模型字段添加
进入网站后台,点击[核心]——[内容模型管理],选择“普通文章”并点击“更改”按钮。在编辑界面切换到“字段管理”选项,点击“添加新字段”。完成字段创建后,在增加或编辑文档时即可看到该字段。
上传好需要显示的图片并保存。
2. 前台调用
前台调用自定义字段通常通过arclist标签实现,结合 channelid 与 addfields 参数。以下是一个示例:
{dede:arclist row='2' channeld='1' addfields='自定义字段1,自定义字段2'}
底层模板 insertext
{/dede:arclist}
结合刚才创建的函数,调用方法如下:
{dede:arclist row='5' orderby='id' channelid='1' addfields='imgurl'}
< li>[field:title/][field:imgurl function='GetOneImgUrl(@me,0)'/]
{/dede:arclist}
以上方法可以帮助您正确调用自定义图片字段,确保图片能够正常显示。