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

在dede的博客空间中,spacenewart标签只能调用频道的内容,不能调用特定栏目的文章,不能调用附加表字段,功能有限。 现修改spacenewart标签的文件include\tpllib\plus_spacenewart.php 以实现如下功能:可以调用特定栏目的文章,可以调用附加表的字段。 inc
在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'指定频道。
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

这篇文章给大家分享的是有关织梦dedecms调用当前栏目文章数的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 做模板时,经常需要为每个栏目加上此栏目的文章数。和大家分享下实现的方法,此方法适合5.6及5.7、5.7sp1其它
现在许多网站使用了SSL技术,网站采用https链接,我们在复制https链接网站的内容,发现图片无法本地化,那么我们想要将这些图片本地化,要怎么操作呢? 第一步: 找到dede/inc/inc_archives_functions.php (注:前边红色的dede目录是您的后台目录) 定位到
最终实现效果如下图:内容生成之后会自动加上本篇文章的tags标签(文档生成时候自动加入,编辑器中内容实际没加入,更有利) 实现教程 1、后台-系统-核心设置-关键字替换,选择【是】 2、后台-系统-其他选项-关键词替换次数,填【1】或者【0】 1:表示文档内
我们传图集后需要对图片进行删除,但是系统提示已删除,实际还保存在网站目录里,这个要怎么解决呢? 打开 \dede\swfupload.php 找到 if(!file_exists($imgfile) !is_dir($imgfile) preg_match(#^.$cfg_medias_dir.#, $imgfile)) 替换成: if(file_exists($i
织梦tags标签只能写12个字符也就是6个汉字,多出的字符就会自动截断,或者直接被去除,不单单需要通过修改数据库字段长度,还要修改程序文件来改变tags字数限制,tags标签默认长度。 1、修改tags数据表字段长度 后台-系统-SQL命令行工具-执行下面2句语句(一起
大家都知道,Discuz程序在发文章时有个【隐藏】功能,可以限制这个隐藏内容供某些级别的会员查看。 在织梦模板中,做些改动,也是可以实现的。例如:电话号码,下载地址等等。 前提是开启会员功能,已经有了自定义字段。 一、建立文件 ajax_loginsta_c.php: