在使用Dedecms CMS时,通过addfields功能可以轻松实现自定义字段的添加。不过需要注意的是,如果后续需要调用这些字段,必须确保底层模板已被正确选中,否则可能会导致字段无法正常显示。
以下是实现该功能的具体语法代码:
{dede:arclist addfields='附加字段1,附加字段2,附加字段3' row='8' channelid='自定义模型id号'}
[field:textlink /] [field:附加字段1/] [field:附加字段2/] [field:附加字段3/]
{/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中添加并调用自定义字段,无论是文字还是图片类型都可以得到妥善处理。