在Dedecms内容管理系统中,实现自定义图片字段的调用是一个常见的需求。本文将详细介绍两种方法,帮助您轻松实现这一功能。以下内容适用于5.7sp1版本,并已通过测试。

方法一:创建自定义函数

首先,我们需要在系统中添加一个自定义函数。找到/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:arclist addfields='pro_img1,pro_img2' channelid='1'}
    
    
        
    
{/dede:arclist}

其中,channelid='1'表示频道ID,而'pro_img1,pro_img2'为图片字段名称,请根据实际需求替换。

方法二:利用正则表达式

如果您不希望修改核心文件,可以尝试以下方法:


{dede:arclist addfields='pro_img1' channelid='1'}
    
{/dede:arclist}

这种方法的优点是无需修改系统核心文件,但缺点是每次只能提取一个图片字段。

关于channelidtypeid的区别:

channelid用于频道调用,管理的是内容模型中的频道,每个频道名称前都有一个ID,此ID可通过channelid调用。

typeid则是纯粹的栏目调用,主要用于调用指定栏目的文章内容。

总结:
通过以上两种方法,您可以灵活地在Dedecms中调用自定义图片字段。无论是选择修改核心文件还是利用正则表达式,都可根据具体需求选择最适合的方式。

注意:在操作过程中,请确保备份相关文件,以免对系统造成不可逆的影响。

希望这篇文章能帮助到您!