织梦dedecms使用ARCLIST标签中IDLIST进行文章排序
更多精彩就在: 51免费论文网|www.jxszl.com
上方法,再说原理.先打开/include/taglib/arclist.lib.php所有的修改都是在这里面完成的.
I..找到returnlib_arclistDone这段代码,在其前面加上$orderidlist=$ctag->GetAtt(‘orderidlist’);并且在lib_arclistDone函数调用的最后面加上参数$orderidlist,代码如下:
$orderidlist=$ctag->GetAtt(‘orderidlist’);
returnlib_arclistDone
(
$refObj,$ctag,$typeid,$ctag->GetAtt(‘row’),$ctag->GetAtt(‘col’),$titlelen,$infolen,
$ctag->GetAtt(‘imgwidth’),$ctag->GetAtt(‘imgheight’),$listtype,$orderby,
$ctag->GetAtt(‘keyword’),$innertext,$envs[‘aid’],$ctag->GetAtt(‘idlist’),$channelid,
$ctag->GetAtt(‘limit’),$flag,$ctag->GetAtt(‘orderway’),$ctag->GetAtt(‘subday’),$ctag->GetAtt(‘noflag’),
$tagid,$pagesize,$isweight,$orderidlist
);
II.找到functionlib_arclistDone这段代码,在函数lib_arclistDone的最后加上参数$orderidlist=’N’,代码如下:
functionlib_arclistDone(&$refObj,&$ctag,$typeid=0,$row=I.0,$col=I.,$titlelen=III0,$infolen=I.VI0,
$imgwidth=I.II0,$imgheight=IX0,$listtype=’all’,$orderby=’default’,$keyword=",
$innertext=",$arcid=0,$idlist=",$channelid=0,$limit=",$att=",$order=’desc’,$subday=0,$noflag=",$tagid=",$pagesize=0,$isweight=’N’,$orderidlist=’N’)
III.找到$innertext=trim($innertext);,在其下面加上$orderidlist=AttDef($orderidlist,’N’);代码如下:
$orderby=strtolower($orderby);
$keyword=trim($keyword);
$innertext=trim($innertext);
$orderidlist=AttDef($orderidlist,’N’);
$tablewidth=$ctag->GetAtt(‘tablewidth’);
$writer=$ctag->GetAtt(‘writer’);
if($tablewidth==")$tablewidth=I.00;
IV.搜索//指定了id或使用缓存中的id"把下面的条件语句改成:
//指定了id或使用缓存中的id
if($idlist!=")
{
$query=SELECTarc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.nameruleII,tp.ispart,
tp.moresite,tp.siteurl,tp.sitepath
$addfieldsSql
FROM`$maintable`arcleftjoin`dede_arctype`tponarc.typeid=tp.id
$addfieldsSqlJoin
WHEREarc.idin($idlist);
if($orderidlist==‘N’){
$query.=$ordersql;
}else{
$query.="ORDERBYFIELD(arc.id,$idlist);
}
}
这样就对arclist添加了I.个orderidlist属性,有参数Y/N,默认为N,为Y的时候,就可以按idlist排序了.其实这个原理也非常简单,就是利用的MYSQL数据库的ORDERBYFIELD功能.所以这样我们就可以使用idlist排序了
原文链接:http://www.jxszl.com/biancheng/dedecms/75090.html
热门阅读