找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1503|回复: 0

[分享] dede:channelartlist获取指定的栏目列表

[复制链接]
发表于 2018-3-16 14:58:29 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
我们平时调用指定栏目列表的时候,channel标签虽然能调用栏目列表,但是不能调用指定的某些栏目栏目,所以我们一般用dede:channelartlist标签来实现,然后指定typeid属性来调用多个栏目,用逗号“,”分隔。
但是调用指定栏目的时候,都是用的后台栏目指定的排序方式,但是只需要修改一小点东西,就可以实现按我们指定的typeid顺序进行排序。方法如下:
打开/include/taglib/channelartlist.lib.php, 找到
  1. $dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath     FROM `idea_arctype` WHERE $tpsql ORDER BY sortrank ASC 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
  7.                                         FROM `idea_arctype` WHERE $tpsql  LIMIT $totalnum");
复制代码


这样后台的修改就完成了,模板调用的时候,在channelartlist标签中,增加一个ordeby='typeid'就可以按typeid排序了,不指定的话,就按后台指定的排序:
测试代码
  1. {dede:channelartlist typeid='1,2,3,4,5'}
  2. {dede:field.typename/}<br/>
  3. {/dede:channelartlist}
  4. -------------------------------------------<br/>
  5. {dede:channelartlist typeid='4,5,2,1,3' orderby='typeid'}
  6. {dede:field.typename/}<br/>
  7. {/dede:channelartlist}
  8. 对比如下:
复制代码

dede:channelartlist获取指定的栏目列表
141D3641V40-21925.webp

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-2-2 08:31 , Processed in 0.038091 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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