虽然织梦已经给我提供了很多的默认字段了,但是这些字段并不是能满足我们所有人的需求的,这个时候就需要用到织梦提供的另外一个功能,那就是织梦DEDECMS自定义字段功能!
具体如何添加自定义字段这里就不做讲解了,本结主要讲一下这些织梦自定义字段如何在前台调用的。
1、织梦自定义文本字段的调用方法
文本字段是最常见的自定义字段方法,也是前台调用最简单的具体方法如下
a、列表页调用
//ziduan 为自定义字段名 channelid='1' 为内容模型id
// dede:list标签调用时不用添加 channelid和addfields两个字段
{dede:arclist typeid='3' row='4' addfields='ziduan' channelid='1' }
<P>字段:[field:ziduan/]</P>
{/dede:arclist}
b、文章内容页调用
{dede:field name='ziduan'/}
2、织梦自定义图片字段调用
织梦自定义图片字段也可以使用方法一的方式调用,不过调用处理的结果带有默认的html标签,可能不是我们想要的,如果我们只想调用图片的地址,就需要在/inclue/extend.fun.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 .= '<img src="'.$imgurl.'" width="'.$width.'" height="'.$height.'" />';
}
}
}
}
}
$dtp->Clear();
return $img;
}
}
最后前台调用方式
//列表调用 dede:list标签调用时不用添加 channelid和addfields两个字段
{dede:arclist typeid='1' row='14' titlelen='50' channelid='id号' addfields='自定义图片字段'}
[field:自定义图片字段 function=GetImgUrl(@me)/]
{/dede:arclist}
//文章页调用
{dede:field.自定义图片字段 function='GetOneImgUrl(@me,1)'/}
3、织梦自定义附件字段调用
织梦自定义附件字段调用和自定义图片字段一样,如果如果直接使用方法一也是可以调用出来的,但是调用的结果也是带有默认的html格式的。如果您只想调用自定义附件字段的地址需要做如下处理。
找到\templets\system\channel_addon.htm把里面的内容全部删除!只留下一个 ~link~ 字符串然后就可以使用方法一直接调用啦
// dede:list标签调用时不用添加 channelid和addfields两个字段
{dede:arclist typeid='3' row='4' addfields='ziduan' channelid='1' }
<P>[field:自定义附件字段名/]</P>
{/dede:arclist}
//内容页调用
{dede:field.自定义附件字段名/}
如果你还想获取附件的大小、类型、和时间具体操作方法:/inclue/extend.fun.php添加如下代码
function GetFileInfos($file, $type='size')
{
global $cfg_basedir;
$filepath = $cfg_basedir.$file;
$size = filesize($filepath);
$fileinfos = pathinfo($filepath);
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;
if($type=='size') return round($size, 2).$units[$i];
if($type=='type') return $fileinfos['extension'];
if($type=='name') return $fileinfos['filename'];
if($type=='time') return MyDate("Y-m-d H:i:s", filemtime($filepath));
}
调用方法如下
{dede:list}
类型:[field:pdf function=GetFileInfos(@me,type)/]
大小:[field:pdf function=GetFileInfos(@me,size)/]
时间:[field:pdf function=GetFileInfos(@me,time)/]
{/dede:list}