channelartlist增加limit属性

/include/taglib/channelartlist.lib.php

修改为以下内容

<?php   if(!defined('DEDEINC')) exit('Request Error!');
/**
 * 获取当前频道的下级栏目的内容列表标签
 *
 * @version        $Id: channelartlist.lib.php 1 9:29 2010年7月6日Z tianya $
 * @package        DedeCMS.Taglib
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */

/*>>dede>>
<name>频道文档</name>
<type>全局标记</type>
<for>V55,V56,V57</for>
<description>获取当前频道的下级栏目的内容列表标签</description>
<demo>
{dede:channelartlist row=6}
<dl>
 <dt><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></dt>
 <dd>
 {dede:arclist titlelen='42' row='10'}    <ul class='autod'> 
     <li><a href="[field:arcurl /]">[field:title /]</a></li>
      <li>([field:pubdate function="MyDate('m-d',@me)"/])</li>
    </ul>
{/dede:arclist}
</dl>
{/dede:channelartlist}
</demo>
<attributes>
    <iterm>typeid:频道ID</iterm> 
    <iterm>row:获取的栏目返回值</iterm>
</attributes> 
>>dede>>*/

require_once(DEDEINC.'/arc.partview.class.php');

function lib_channelartlist(&$ctag,&$refObj)
{
    global $dsql,$envs,$_sys_globals;

    //处理标记属性、innertext
    $attlist = 'typeid|0,row|20,cacheid|,limit|';
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $innertext = trim($ctag->GetInnerText());
    $artlist = '';
    //读取固定的缓存块
    $cacheid = trim($cacheid);
    if($cacheid !='') {
        $artlist = GetCacheBlock($cacheid);
        if($artlist!='') return $artlist;
    }

    if(empty($typeid))
    {
        $typeid = ( !empty($refObj->TypeLink->TypeInfos['id']) ?  $refObj->TypeLink->TypeInfos['id'] : 0 );
    }

    if($innertext=='') $innertext = GetSysTemplets('part_channelartlist.htm');
    $totalnum = $row;
    if(empty($totalnum)) $totalnum = 20;

    //获得类别ID总数的信息
    $typeids = array();
    if($typeid==0 || $typeid=='top') {
        $tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 ";
    }
    else
    {
        if(!preg_match('#,#', $typeid)) {
            $tpsql = " reid='$typeid' AND ispart<>2 AND ishidden<>1 ";
        }
        else {
            $tpsql = " id IN($typeid) AND ispart<>2 AND ishidden<>1 ";
        }
    }
    $limit = trim(preg_replace('#limit#is', '', $limit));
    if($limit!='') $limitsql = " LIMIT $limit ";
    else $limitsql = " LIMIT 0,$totalnum";
    $dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath 
                                            FROM `#@__arctype` WHERE $tpsql ORDER BY sortrank ASC $limitsql");

    $dsql->Execute();
    while($row = $dsql->GetArray()) {
        $typeids[] = $row;
    }

    if(!isset($typeids[0])) return '';

    $GLOBALS['itemindex'] = 0;
    $GLOBALS['itemparity'] = 1;
    for($i=0;isset($typeids[$i]);$i++)
    {
        $GLOBALS['itemindex']++;
        $pv = new PartView($typeids[$i]['id']);
        $pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
        $pv->SetTemplet($innertext,'string');
        $artlist .= $pv->GetResult();
        $GLOBALS['itemparity'] = ($GLOBALS['itemparity']==1 ? 2 : 1);
    }
    //注销环境变量,以防止后续调用中被使用
    $GLOBALS['envs']['typeid'] = $_sys_globals['typeid'];
    $GLOBALS['envs']['reid'] = '';
    if($cacheid !='') {
        WriteCacheBlock($cacheid, $artlist);
    }
    return $artlist;
}

这样就可以实现了

在同一栏目分别调用

大栏目下 第一个子栏目
{dede:channelartlist limit='0,1'} 
{dede:arclist row='6'}
{/dede:arclsit}
{/dede:channelartlist}
大栏目下 第二个子栏目
{dede:channelartlist limit='1,1'}
{dede:arclist row='6'}
{/dede:arclsit}
{/dede:channelartlist}

上面就可以在一个模板中调用

如果在子栏目下 调用同级栏目的信息

{dede:channelartlist type='reid' limit='0,1'}
{dede:arclist row='6'}
{/dede:arclist}
{/dede:channelartlist}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值