dedecms调用自定义字段图片诀窍

有时候需要文章列表调用dedecms缩略图片,文章内容页面头部banner显示另一张图片,怎么办呢?可以采用调用dedecms自定义的图片,大小宽度随自己控制了,非常美观。

第一步骤:

找到:/wwwroot/include  extend.func.php

在文件:extend.func.php 全选原代码,粘贴覆盖如下代码:
<?php
function litimgurls($imgid=0)
{
    global $lit_imglist,$dsql;
    //获取附加表
    $row = $dsql->GetOne("SELECT c.addtable FROM ja02opLN2St_archives AS a LEFT JOIN ja02opLN2St_channeltype AS c 
                                                            ON a.channel=c.id where a.id='$imgid'");
    $addtable = trim($row['addtable']);
    
    //获取图片附加表imgurls字段内容进行处理
    $row = $dsql->GetOne("Select imgurls From `$addtable` where aid='$imgid'");
    
    //调用inc_channel_unit.php中ChannelUnit类
    $ChannelUnit = new ChannelUnit(2,$imgid);
    
    //调用ChannelUnit类中GetlitImgLinks方法处理缩略图
    $lit_imglist = $ChannelUnit->GetlitImgLinks($row['imgurls']);
    
    //返回结果
    return $lit_imglist;
}
 
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;         
    }     
}    
?>
 
 
php代码结束。

第二步骤:


点核心、内容模型管理、普通文章、字段管理、添加比如:
文章内容页面顶部大图 toppic 图片 自动表单
 
保存。
如图所示
添加dedecms自定义图片字段


第三步骤:前台调用

我的实现方法是:

更正一下:在文章内容页面调用最好用这个:{dede:field.toppic /}
完成。
 

{dede:arclist row='1' orderby='id' channelid='1' addfields='toppic'}     
<li>[field:toppic function='GetOneImgUrl(@me,0)'/]</li>    
{/dede:arclist}   

第四步骤:更新所有文档,成功了。

以下是其它网站转载过来的方式:

原本我们前台调用这个字段的方法,就是通过arclist标签的 channelid 与 addfields 两个参数来配合调用(点击查看arclist的标签详解),这里不再重复的一一熬述。但大体的自定义字段的方法是这样的:

 

[html] view plain copy
 
  1. {dede:arclist row='2' channeld='1' addfields='自定义字段1,自定义字段2'}  
  2.  底层模板 insertext  
  3. {/dede:arclist}  

 

运用到我们刚才的这个函数,调用方法为:

 

[html] view plain copy
 
  1. {dede:arclist row='5' orderby='id' channelid='1' addfields='imgurl'}     
  2. <li>[field:title/][field:imgurl function='GetOneImgUrl(@me,0)'/]</li>    
  3. {/dede:arclist}    
或者使用sql语句查询:
[html] view plain copy
 
  1. {dede:arclist  typeid='~id~' flag = 'p'}  
  2.     [field:id runphp="yes"]   
  3.         $row = $GLOBALS['dsql']->GetOne("Select img From `dede_addonimages` where aid=@me");   
  4.         @me = $row['img'];  
  5.         @me=GetOneImgUrl(@me,1);  
  6.     [/field:id]  
  7. {/dede:arclist}