在使用Dedecms进行网站开发时,调用自定义图片字段是常见的需求。然而,默认的输出格式可能无法满足实际需求,例如制作幻灯片时需要更灵活的图片调用方式。本文将详细介绍如何通过修改代码实现自定义图片字段的灵活调用。
首先,在内容页或列表页中,Dedecms默认输出的图片格式如下:


  • 这种格式显然不够灵活,尤其是在需要自定义图片展示效果时。为了实现更灵活的图片调用,我们需要对Dedecms进行一些调整。
    在设置自定义字段为图片时,务必选择“图片(仅网址)”选项。这样,输出的格式会简化为以下形式:
    
    {dede:imgtext='' width='270' height='129'}/uploads/101017/1-10101H21F54P.gif{/dede:img}
    
    如果自定义字段名为 `name`,在内容页前台可以通过以下代码调用:
    
    
    
    此时,输出的结果将是:
    
    
    
    然而,这仍然不是我们期望的最终效果。问题出在缺少相关的PHP函数支持。为了解决这一问题,我们需要编辑 `/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;
        }
    }
    
    保存后,前台内容页可以使用以下格式调用图片:
    
    {dede:field.title/}
    
    其中,`@me,0` 表示只输出图片路径,而 `@me,1` 则表示连同宽高一起输出。
    最后,在列表页或首页中,只需将相应的标签嵌套进去即可实现同样的效果。通过以上步骤,您可以轻松实现Dedecms自定义图片字段的灵活调用,满足更多个性化需求。