在网站建设过程中,可能会遇到这样一个问题:为什么在首页使用自定义列表调用出来的图片字段不是正确的图片地址,而是类似于以下格式:

{dede:img text='' width='270' height='129'} /uploads/101017/1-10101H21F54P.gif {/dede:img}

这显然不能正确显示图片。这是由于Dedecms CMS对自定义图片字段的处理方式造成的。为了解决这个问题,我们需要创建一个自定义函数。

以下是具体的实现步骤:

一、创建自定义函数

打开 /include/extend.func.php 文件(如果您的Dedecms版本较老,默认可能没有这个文件,您可以自行创建一个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;
}

保存并关闭文件。

二、调用自定义函数

创建好函数后,接下来是如何调用它。调用方法如下:

[field:自定义图片字段名 function="GetOneImgUrl(@me, 显示类型)"/]

其中,“自定义图片字段名”是您在后台设置的字段名称,“显示类型”参数决定返回值的形式:

  • 如果“显示类型”为 0,则返回完整的HTML img标签。
  • 如果“显示类型”为 1,则仅返回图片的URL地址。

例如,假设您的自定义图片字段名为 imgurl,那么可以这样调用:

[field:imgurl function='GetOneImgUrl(@me, 0)'/]

或者:

[field:imgurl function='GetOneImgUrl(@me, 1)'/]

通过以上步骤,您就可以成功解决Dedecms中自定义图片字段无法正确显示的问题。

希望这篇文章能够帮助到正在做站的朋友们!如果您还有其他疑问,欢迎继续探讨。


注意:本文内容仅供参考,请根据实际需求进行调整。