用dedecms做一个视频教程站,需要添加一个新字段(第几集),然后按照集数排序。在网上找了很多方法没有实现,自己整理了一个简单的方法。需要改dede:arclist和dede:list标签的源文件。
用dedecms做一个视频教程站,需要添加一个新字段(第几集),然后按照集数排序。在网上找了很多方法没有实现,自己整理了一个简单的方法。需要改dede:arclist和dede:list标签的源文件。
找到dede:arclist标签源文件-include\taglib\arclist.lib.php
在arclist.lib.php文件查找“//文档排序的方式”
第335行左右添加代码
else if($orderby == 'number') $ordersql = " ORDER BY addf.number $orderWay";
原因可以在“//获取附加表信息”这段代码查看
addf是新字段附加表的sql别名
有差别可以自己调整
然后就可以在dede:arclist标签用orderby='number'排序
找到dede:list标签源文件-include\arc.listview.class.php
这个文件代码修改要多一些
在arc.listview.class.php页面查找“//排序方式”
大概738行添加代码
else if($orderby=="number") { $ordersql = " ORDER BY addf.number $orderWay"; }
查找“//获得附加表的相关信息”
大概749行修改代码,加“//”的是原代码,"\\"是修改的代码(下同)
//$addJoin = " LEFT JOIN `$addtable` ON arc.id = ".$addtable.'.aid ';
\\$addJoin = " LEFT JOIN `$addtable` addf ON arc.id = addf.aid ";
大概763行,修改if..else...中的代码
if(!empty($arr['rename'])) {
//$addField .= ','.$addtable.'.'.$k.' as '.$arr['rename'];
\\$addField .= ',addf.'.$k.' as '.$arr['rename'];
} else {
// $addField .= ','.$addtable.'.'.$k;
\\$addField .= ',addf.'.$k; }
查找“//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)”
大概763行,修改代码
//if(preg_match('/hot|click|lastpost/', $orderby))
\\if(preg_match('/hot|click|lastpost|number/', $orderby))
热门源码