在使用Dedecms CMS时,通过addfields功能可以轻松实现自定义字段的添加。不过需要注意的是,如果后续需要调用这些字段,必须确保底层模板已被正确选中,否则可能会导致字段无法正常显示。


以下是实现该功能的具体语法代码:

{dede:arclist addfields='附加字段1,附加字段2,附加字段3' row='8' channelid='自定义模型id号'}
[field:textlink /]  [field:附加字段1/]  [field:附加字段2/]  [field:附加字段3/]
{/dede:arclist}


接下来是一个具体的实例代码:

{dede:arclist flag='c' typeid='23' channelid='1' addfields='tpic2' limit='0,8'}

{/dede:arclist}


为了确保自定义字段能够正常调用,请遵循以下要求:


1、必须指定 channelid 属性。
2、明确指定要获取的字段,例如:addfields='字段1,字段2'。
3、选择“使字段可以在列表的底层模板中获得”。此选项默认仅允许文档模板显示自定义字段,启用后虽然可以解决字段调用问题,但可能会降低列表查询的速度。因此,如无必要,请勿选择。


对于图片类型的字段,直接使用以下代码可能无法达到预期效果:

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


为了解决这个问题,我们可以创建一个自定义函数。以下是具体代码:

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:tpic2 function='GetOneImgUrl(@me,1)'/]

通过以上步骤,您可以成功地在Dedecms中添加并调用自定义字段,无论是文字还是图片类型都可以得到妥善处理。