浙北英语网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

湖州日报:3名学子入围“希望之星”只有狂人才干的事情!带字幕美国之音慢速英语VOA Special English学英语视频近1000个,自诩为国内最全!适合增加词汇和锻炼听力!点击查看...
查看: 249|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-1-16 13:03:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
源程序修改之前,切记备份,请自行测试,有问题到论坛交流。

找到 \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");

在其前面添加(注意是在前面添加):
//否定指定IDif($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
  1. <?php



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

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



  4. function lib_channelartlist(&$ctag,&$refObj)

  5. {

  6.         global $dsql,$envs,$_sys_globals;



  7.         //处理标记属性、innertext

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

  9.         FillAttsDefault($ctag->CAttribute->Items,$attlist);

  10.         extract($ctag->CAttribute->Items, EXTR_SKIP);

  11.         $innertext = trim($ctag->GetInnerText());

  12.         $artlist = '';

  13.         //读取固定的缓存块

  14.         $cacheid = trim($cacheid);

  15.         if($cacheid !='') {

  16.                 $artlist = GetCacheBlock($cacheid);

  17.                 if($artlist!='') return $artlist;

  18.         }

  19.        

  20.         if(empty($typeid))

  21.         {

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

  23.         }

  24.        

  25.         if($innertext=='') $innertext = GetSysTemplets('part_channelartlist.htm');

  26.         $totalnum = $row;

  27.         if(empty($totalnum)) $totalnum = 20;



  28.         //获得类别ID总数的信息

  29.         $typeids = array();

  30.         if($typeid==0 || $typeid=='top') {

  31.                 $tpsql = " reid=0 And ispart<>2 And ishidden<>1 And channeltype>0 ";

  32.         }

  33.         else

  34.         {

  35.                 if(!ereg(',',$typeid)) {

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

  37.                 }

  38.                 else {

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

  40.                 }

  41.         }

  42.        

  43.         //否定指定ID

  44.         if($notypeid!=0) {

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

  46.         }

  47.        

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

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

  50.         $dsql->Execute();

  51.         while($row = $dsql->GetArray()) {

  52.                 $typeids[] = $row;

  53.         }



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



  55.         $GLOBALS['itemindex'] = 0;

  56.         $GLOBALS['itemparity'] = 1;

  57.         for($i=0;isset($typeids[$i]);$i++)

  58.         {

  59.                 $GLOBALS['itemindex']++;

  60.                 $pv = new PartView($typeids[$i]['id']);

  61.                 $pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);

  62.                 $pv->SetTemplet($innertext,'string');

  63.                 $artlist .= $pv->GetResult();

  64.                 $GLOBALS['itemparity'] = ($GLOBALS['itemparity']==1 ? 2 : 1);

  65.         }

  66.         //注销环境变量,以防止后续调用中被使用

  67.         $GLOBALS['envs']['typeid'] = $_sys_globals['typeid'];

  68.         $GLOBALS['envs']['reid'] = '';

  69.         if($cacheid !='') {

  70.                 WriteCacheBlock($cacheid, $artlist);

  71.         }

  72.         return $artlist;

  73. }

  74. ?>
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|典范英语|Oxford在线词典|在线查词典|每日签到|浙北英语网 ( 蜀ICP备10032068号 )

GMT+8, 2024-9-2 02:32 , Processed in 0.058575 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表