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}

 

posted @ 2017-12-30 11:07  紫云传芳  阅读(1073)  评论(0编辑  收藏  举报