在使用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}

以上方法可以帮助您正确调用自定义图片字段,确保图片能够正常显示。