织梦中 List 是分页列表所用标签,可惜不支持自定义排序。此修改针对于 独立模型 文章排序修改 /include/arc.listview.class.php 即可,原理同下。
/plus/list.php
if($tinfos['issystem']==-1) // 如果不是系统模型 则实例化 SgListView()
{
$nativeplace = ( (empty($nativeplace) || !is_numeric($nativeplace)) ? 0 : $nativeplace );
$infotype = ( (empty($infotype) || !is_numeric($infotype)) ? 0 : $infotype );
if(!empty($keyword)) $keyword = FilterSearch($keyword);
$cArr = array();
if(!empty($nativeplace)) $cArr['nativeplace'] = $nativeplace;
if(!empty($infotype)) $cArr['infotype'] = $infotype;
if(!empty($keyword)) $cArr['keyword'] = $keyword;
include(DEDEINC."/arc.sglistview.class.php");
$lv = new SgListView($tid,$cArr);
}
打开 /include/arc.sglistview.class.php 690 行
//如果不用默认的sortrank或id排序,使用联合查询(数据量大时非常缓慢)
if(true || preg_match('/hot|click/', $orderby) || $this->sAddTable) /./修改行
{
$query = "SELECT tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,
tp.ispart,tp.moresite,tp.siteurl,tp.sitepath,arc.aid,arc.aid AS id,arc.typeid,
$addField
FROM `{$this->AddTable}` arc
LEFT JOIN `qrx_arctype` tp ON arc.typeid=tp.id
WHERE {$this->addSql} $ordersql LIMIT $limitstart,$row";
//echo $query;
}
注意修改以后,使用自定义排序有损性能。生成的时间在长一些。