• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    dedecms会员中心空间中,spacenewart标签功能的拓展
    POST TIME:2017-11-12 23:32
    在dede的博客空间中,spacenewart标签只能调用频道的内容,不能调用特定栏目的文章,不能调用附加表字段,功能有限。
    现修改spacenewart标签的文件include\tpllib\plus_spacenewart.php
    以实现如下功能:可以调用特定栏目的文章,可以调用附加表的字段。
    include\tpllib\plus_spacenewart.php 修改后的代码如下:

    <?php   if(!defined('DEDEINC')) exit('Request Error!');
    
    /**
     * 动态dedecms模板spacenewart标签
     *
     * @version        $Id: plus_spacenewart.php 1 13:58 2010年7月5日Z tianya $
     * @package        DedeCMS.Tpllib
     * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
     * @license        http://help.dedecms.com/usersguide/license.html
     * @link           http://www.dedecms.com
     */
    
     
    function plus_spacenewart(&$atts,&$refObj,&$fields)
    {
        global $dsql,$_vars;
    
        $attlist = "channel=1,titlelen=40,infolen=200,row=8,imgwidth=120,imgheight=90";
        FillAtts($atts,$attlist);
        FillFields($atts,$fields,$refObj);
        extract($atts, EXTR_OVERWRITE);
    
        //获取附加表信息
     //$addfield ='fengge';
        $addfield =trim($addfields);
     //echo  $addfield;
        $addfieldsSql = '';
        $addfieldsSqlJoin = '';
        if($addfield != '' && !empty($channel))
        {
            $row2 = $dsql->GetOne("SELECT addtable FROM `dede_channeltype` WHERE id='$channel' ");
            if(isset($row2['addtable']) && trim($row2['addtable']) != '')
            {
                $addtable = trim($row2['addtable']);
                $addfields = explode(',', $addfield);
                $row2['addtable'] = trim($row2['addtable']);
                $addfieldsSql = ",addf.".join(',addf.', $addfields);
                $addfieldsSqlJoin = " LEFT JOIN `$addtable` addf ON addf.aid = arc.id ";
            }
        }
        $query = "Select arc.*,mt.mtypename,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,
            tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath $addfieldsSql
            from `dede_archives` arc
            left join `dede_arctype` tp on arc.typeid=tp.id
            left join `dede_mtypes` mt on mt.mtypeid=arc.mtype $addfieldsSqlJoin
            where arc.mid='{$_vars['mid']}' and arc.channel=$channel and arc.ismake='1' and arc.typeid in ($typeid)
            order by id desc limit 0,$row";
        //echo $query;
        $dsql->SetQuery($query);
        $dsql->Execute("al");
        $artlist = '';
        $rearr = array();
     $i=1;
        while($row = $dsql->GetArray("al"))
        {
            //处理一些特殊字段
      $row['i']=$i;
      $i=$i+1;
            $row['infos'] = cn_substr($row['description'],$infolen);
            $row['id'] =  $row['id'];
    
            $row['arcurl'] = GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],$row['ismake'],
            $row['arcrank'],$row['namerule'],$row['typedir'],$row['money'],$row['filename'],$row['moresite'],$row['siteurl'],$row['sitepath']);
    
            $row['typeurl'] = GetTypeUrl($row['typeid'],$row['typedir'],$row['isdefault'],$row['defaultname'],$row['ispart'],
            $row['namerule2'],$row['moresite'],$row['siteurl'],$row['sitepath']);
    
            if($row['litpic']=='')
            {
                $row['litpic'] = '/images/defaultpic.gif';
            }
            if(!preg_match("#^http:\/\/#i", $row['litpic']))
            {
                $row['picname'] = $row['litpic'] = $GLOBALS['cfg_cmsurl'].$row['litpic'];
            }
            else
            {
                $row['picname'] = $row['litpic'] = $row['litpic'];
            }
            $row['stime'] = GetDateMK($row['pubdate']);
            $row['typelink'] = "<a href='".$row['typeurl']."'>".$row['typename']."</a>";
            $row['image'] = "<img src='".$row['picname']."' border='0' width='$imgwidth' height='$imgheight' alt='".preg_replace("#['><]#", "", $row['title'])."'>";
            $row['imglink'] = "<a href='".$row['filename']."'>".$row['image']."</a>";
            $row['fulltitle'] = $row['title'];
            $row['title'] = cn_substr($row['title'],$titlelen);
            if($row['color']!='') {
                $row['title'] = "<font color='".$row['color']."'>".$row['title']."</font>";
            }
            if(preg_match('#b#', $row['flag']))
            {
                $row['title'] = "<strong>".$row['title']."</strong>";
            }
            //$row['title'] = "<b>".$row['title']."</b>";
    
            $row['textlink'] = "<a href='".$row['filename']."'>".$row['title']."</a>";
    
            $row['plusurl'] = $row['phpurl'] = $GLOBALS['cfg_phpurl'];
            $row['memberurl'] = $GLOBALS['cfg_memberurl'];
            $row['templeturl'] = $GLOBALS['cfg_templeturl'];
            
      //$row['fengge'] = $row['fengge'];
      
            $rearr[] = $row;
        }//loop line
        $dsql->FreeResult("al");
        return $rearr;
    }

    功能拓展后的spacenewart标签使用示例如下:
    {dede:spacenewart row=1 titlelen=60  typeid='29' channel='18' addfields='name,shengshi,nianling' }
    
    <table width="220" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td height="28" align="left" valign="middle">姓名:<font color="#0041D9">{dede:field.name/}</font></td>
    </tr>
    <tr>
    <td height="28" align="left" valign="middle">籍贯:<font color="#0041D9">{dede:field.shengshi/}</font></td>
    </tr>
    <tr>
    <td height="28" align="left" valign="middle">年龄:<font color="#0041D9">{dede:field.nianling/}</font></td>
    </tr>
    </table>
    
    {/dede:spacenewart}
    其中name,shengshi,nianling字段为附加表字段,typeid='29'指定栏目,channel='18'指定频道。
    
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!