仿站咨询QQ:2587483189

手机微信同号:15850888840

dedecms会员中心空间中,spacenewart标签功能的拓展

 在dede的博客空间中,spacenewart标签只能调用频道的内容,不能调用特定栏目的文章,不能调用附加表字段,功能有限。 

 
现修改spacenewart标签的文件include\tpllib\plus_spacenewart.php 
 
以实现如下功能:可以调用特定栏目的文章,可以调用附加表的字段。
 
include\tpllib\plus_spacenewart.php 修改后的仿站代码如下:
 
001
<?php   if(!defined('DEDEINC')) exit('Request Error!');
002
 
003
/**
004
 * 动态dedecms模板spacenewart标签
005
 *
006
 * @version        $Id: plus_spacenewart.php 1 13:58 2010年7月5日Z tianya $
007
 * @package        DedeCMS.Tpllib
008
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
009
 * @license        http://help.dedecms.com/usersguide/license.html
010
 * @link           http://www.dedecms.com
011
 */
012
 
013
  
014
function plus_spacenewart(&$atts,&$refObj,&$fields)
015
{
016
    global $dsql,$_vars;
017
 
018
    $attlist = "channel=1,titlelen=40,infolen=200,row=8,imgwidth=120,imgheight=90";
019
    FillAtts($atts,$attlist);
020
    FillFields($atts,$fields,$refObj);
021
    extract($atts, EXTR_OVERWRITE);
022
 
023
    //获取附加表信息
024
 //$addfield ='fengge';
025
    $addfield =trim($addfields);
026
 //echo  $addfield;
027
    $addfieldsSql = '';
028
    $addfieldsSqlJoin = '';
029
    if($addfield != '' && !empty($channel))
030
    {
031
        $row2 = $dsql->GetOne("SELECT addtable FROM `dede_channeltype` WHERE id='$channel' ");
032
        if(isset($row2['addtable']) && trim($row2['addtable']) != '')
033
        {
034
            $addtable = trim($row2['addtable']);
035
            $addfields = explode(',', $addfield);
036
            $row2['addtable'] = trim($row2['addtable']);
037
            $addfieldsSql = ",addf.".join(',addf.', $addfields);
038
            $addfieldsSqlJoin = " LEFT JOIN `$addtable` addf ON addf.aid = arc.id ";
039
        }
040
    }
041
    $query = "Select arc.*,mt.mtypename,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,
042
        tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath $addfieldsSql
043
        from `dede_archives` arc
044
        left join `dede_arctype` tp on arc.typeid=tp.id
045
        left join `dede_mtypes` mt on mt.mtypeid=arc.mtype $addfieldsSqlJoin
046
        where arc.mid='{$_vars['mid']}' and arc.channel=$channel and arc.ismake='1' and arc.typeid in ($typeid)
047
        order by id desc limit 0,$row";
048
    //echo $query;
049
    $dsql->SetQuery($query);
050
    $dsql->Execute("al");
051
    $artlist = '';
052
    $rearr = array();
053
 $i=1;
054
    while($row = $dsql->GetArray("al"))
055
    {
056
        //处理一些特殊字段
057
  $row['i']=$i;
058
  $i=$i+1;
059
        $row['infos'] = cn_substr($row['description'],$infolen);
060
        $row['id'] =  $row['id'];
061
 
062
        $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
063
        $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);
064
 
065
        $row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],
066
        $row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
067
 
068
        if($row['litpic']=='')
069
        {
070
            $row['litpic'] = '/images/defaultpic.gif';
071
        }
072
        if(!preg_match("#^http:\/\/#i", $row['litpic']))
073
        {
074
            $row['picname'] = $row['litpic'] = $GLOBALS['cfg_cmsurl'].$row['litpic'];
075
        }
076
        else
077
        {
078
            $row['picname'] = $row['litpic'] = $row['litpic'];
079
        }
080
        $row['stime'] = GetDateMK($row['pubdate']);
081
        $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>";
082
        $row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".preg_replace("#['><]#", "", $row['title'])."'>";
083
        $row['imglink'] = "<a href='".$row['filename']."'>".$row['image']."</a>";
084
        $row['fulltitle'] = $row['title'];
085
        $row['title'] = cn_substr($row['title'],$titlelen);
086
        if($row['color']!='') {
087
            $row['title'] = "<font color='".$row['color']."'>".$row['title']."</font>";
088
        }
089
        if(preg_match('#b#', $row['flag']))
090
        {
091
            $row['title'] = "<strong>".$row['title']."</strong>";
092
        }
093
        //$row['title'] = "<b>".$row['title']."</b>";
094
 
095
        $row['textlink'] = "<a href='".$row['filename']."'>".$row['title']."</a>";
096
 
097
        $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
098
        $row['memberurl'] = $GLOBALS['cfg_memberurl'];
099
        $row['templeturl'] = $GLOBALS['cfg_templeturl'];
100
         
101
  //$row['fengge'] = $row['fengge'];
102
   
103
        $rearr[] = $row;
104
    }//loop line
105
    $dsql->FreeResult("al");
106
    return $rearr;
107
}
 
功能拓展后的spacenewart标签使用示例如下:
 
01
{dede:spacenewart row=1 titlelen=60  typeid='29' channel='18' addfields='name,shengshi,nianling' }
02
 
03
<table width="220" border="0" cellspacing="0" cellpadding="0">
04
<tr>
05
<td height="28" align="left" valign="middle">姓名:<font color="#0041D9">{dede:field.name/}</font></td>
06
</tr>
07
<tr>
08
<td height="28" align="left" valign="middle">籍贯:<font color="#0041D9">{dede:field.shengshi/}</font></td>
09
</tr>
10
<tr>
11
<td height="28" align="left" valign="middle">年龄:<font color="#0041D9">{dede:field.nianling/}</font></td>
12
</tr>
13
</table>
14
 
15
{/dede:spacenewart}
 
其中name,shengshi,nianling字段为附加表字段,typeid='29'指定栏目,channel='18'指定频道。

  • 上一篇:如何让{dede:channel}有子栏目显示子栏目,无子栏目不显示同级栏
  • 下一篇:DedeCMS两种方法调用图集所有图片及alt标签
  • 来源:未知//所属分类: dede仿站 /更新时间:2019-09-20
    相关仿站教程