dedecms的channelartlist按typeid指定顺序排列
dedecms channelartlist标签,默认情况下,即使指定了一定顺序排列的typeid,channelartlist却不是以typeid排列顺序来排序的。
我们可以做如下修改实现channelartlist 按typeid顺序输出。
打开/include/taglib/channelartlist.lib.php
找到
$dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `idea_arctype` WHERE $tpsql ORDER BY sortrank ASC LIMIT $totalnum");
修改成:
$dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `standard_arctype` WHERE $tpsql ORDER BY FIELD(id,$typeid) LIMIT $totalnum");
或者
1 if(preg_match('#,#', $typeid) && $orderby == 'typeid') { 2 $tpsql .= " ORDER BY FIELD(id,$typeid) "; 3 }else { 4 $tosql .= ' ORDER BY sortrank ASC '; 5 } 6 $dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `dede_arctype` WHERE $tpsql LIMIT$totalnum");
这样后台的修改就完成了,模板调用的时候,在channelartlist标签中,增加一个ordeby='typeid'就可以按typeid排序了,不指定的话,就按后台指定的排序
channelartlist指定typeid调用实例:
{dede:channelartlist typeid="53,51,54,49" ordeby='typeid'} <a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a> {/dede:channelartlist}