织梦channelartlist调用结果排除指定typeid栏目数据

织梦channelartlist调用结果排除指定typeid栏目数据


源程序修改之前,切记备份,请自行测试,有问题到D8论坛交流。


找到 \include\taglib\channelartlist.lib.php,使用editplus查找$attlist


将$attlist = 'typeid|0,row|20,cacheid|';


修改为:


$attlist = 'typeid|0,row|20,cacheid|,notypeid|0'; [此处添加了一个所要排除typeid的参数---notypeid]


查找:


$dsql->SetQuery("Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath from `dede_arctype` where $tpsql order by sortrank asc limit $totalnum");


在其前面添加(注意是在前面添加):






//否定指定ID


if($notypeid!=0) {


$tpsql = $tpsql."and not(id in($notypeid)) ";


}


模板调用:


{dede:channelartlist typeid ='114' notypeid='123,124,122,127'}


其中notypeid='123,124,122,127'中的123,124,122,127为114的子栏目。


下面是修改后的channelartlist.lib.php













if(!defined('DEDEINC')) exit('Request Error!');


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



function lib_channelartlist($ctag,$refObj)


{


global $dsql,$envs,$_sys_globals;



//处理标记属性、dedecmsinnertext


$attlist = 'typeid|0,row|20,cacheid|,notypeid|0';


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(!ereg(',',$typeid)) {


$tpsql = " reid='$typeid' And ispart<>2 And ishidden<>1 ";


}


else {


$tpsql = " id in($typeid) And ispart<>2 And ishidden<>1 ";


}


}



//否定指定ID


if($notypeid!=0) {


$tpsql = $tpsql."and not(id in($notypeid)) ";


}



$dsql->SetQuery("Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath


from `dede_arctype` where $tpsql order by sortrank asc limit $totalnum");


$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;


}


?>








让dedecms站点内容自动更新到微博
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值