修改dede源码,让dede:channelartlist排除指定typeid
1970-01-01 来源:
找到 \include\taglib\channelartlist.lib.php, ? 查找?$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,125,126,127,128'}
其中notypeid='123,124,125,126,127,128' 中的 123,124,125,126,127,128?为114的子栏目
?
修改后的channelartlist.lib.php
?
<?php
if
(!defined(
'DEDEINC'
))
exit
(
'Request Error!'
);
require_once
(DEDEINC.
'/arc.partview.class.php'
);
function
lib_channelartlist(&
$ctag
,&
$refObj
)
{
????
global
$dsql
,
$envs
,
$_sys_globals
;
????
//处理标记属性、innertext
????
$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 ispart2 And ishidden1 And channeltype>0 "
;
????
}
????
else
????
{
????????
if
(!
ereg
(
','
,
$typeid
)) {
????????????
$tpsql
=
" reid='$typeid' And ispart2 And ishidden1 "
;
????????
}
????????
else
{
????????????
$tpsql
=
" id in($typeid) And ispart2 And ishidden1 "
;
????????
}
????
}
????
????
//否定指定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
;
}
?>
标签: isp
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。