您的位置:首页 > 其它

DEDE(织梦)专题节点支持按后台自定义ID顺序排序输出

2013-07-14 23:36 176 查看
不知道大家在DEDE开发过程中有没有遇到这个问题哦~
刚研究出来和大家分享下,由于公司最近项目有这个需求,本来都快没希望了无意间在谷歌搜索中发现几条SQL函数,研究过DEDE的开发人员应该清楚,DEDE专题节点输出是结合了arclist标签的方式来进行解析的,输出的结构通过SQL语句查询之后循环组合成一组HTML标签生成静态页;好,那我们就依照这个原理来改进它,让其支持自定义排序;
先和大家分享下我搜索到的几个SQL函数:
instr、find_in_set、substring_index、field
用法如下:
instr用法:
select * from table1 order by instr('1,4,5,7,2',id)
find_in_set用法:
select * from test where id in(3,1,5) order by find_in_set(id,'3,1,5');
substring_index用法:
select * from test where id in(3,1,5) order by substring_index('3,1,2',id,1);
field用法:
select * from a where id in(8,11,3) order by field(id,8,11,3);
我采用的是最后一个函数:field 实现了DEDE专题节点自定义ID排序的小需求功能;
首先打开include/taglib/arclist.lib.php文件,查找到下述内容:
else if($orderby == 'scores') $ordersql = "  ORDER BY arc.scores $orderWay";
再该代码后面添加一句判断:
else if($orderby == 'custom') $ordersql = " ORDER BY field(arc.id,$idlist)";
OK,已经完成了百分之九十九了;最后一步打开include/taglib/channel/specialtopic.lib.php文件,大约在61行,将
default
改为

custom
现在更新下专题页面,文档排序是不是和后台输入的一样咯!

本文出自 “逆袭逐风” 博客,请务必保留此出处http://windchaser.blog.51cto.com/5742634/1248827
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: