我们在用到channelartlist标签时候,有时候需要按照typeid进行排序,比如我们想要按照17,4,8这样依次输出,但是默认的会按照4,8,17进行排序。我们想要按照17,4,8这样排,要怎么处理?
{dede:channelartlist typeid='17,4,8'}
<h3><a href="{dede:field.typeurl/}">{dede:field.typename/}</a></h3>
{/dede:channelartlist}
找到 \include\taglib\channelartlist.lib.php 文件,第 78 行,找到如下代码:
$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->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,
siteurl,sitepath FROM `dede_arctype` WHERE $tpsql ORDER BY FIELD(id,$typeid) LIMIT $totalnum");
就可以根据 typeid 排序了。或者直接替换该文件。