织梦CMS让列表页按文章的更新日期pubdate排序

dedecms文章默认排序有id,权重,热点但就是没有更新时间来了,那么我们如果想要做pubdate排序就必须要进行一些简单的修改了,下面一起来看看吧.

注意:在列表页模板,即使你指定orderby='pubdate',但实际还是不是按照pubdate排序的,通过下文可知它是按sortrank排序的.

解决办法:include/arc.listview.class.php 600行左右如下:

  1. //排序方式
  2. $ordersql = '';
  3. if($orderby=="senddate" || $orderby=="id") {
  4. $ordersql=" order by arc.id $orderWay";
  5. }
  6. else if($orderby=="hot" || $orderby=="click") {
  7. $ordersql = " order by arc.click $orderWay";
  8. }
  9. else if($orderby=="lastpost") {
  10. $ordersql = " order by arc.lastpost $orderWay";
  11. }
  12. else {
  13. $ordersql=" order by arc.sortrank $orderWay";
  14. }

可以看到当$orderby为"pubdate"时,排序依据变为$ordersql=" order by arc.sortrank $orderWay";

需要修改两个地方:

修改1)接受pubdate排序方式,代码如下:

  1. //排序方式
  2. $ordersql = '';
  3. if($orderby=="senddate" || $orderby=="id") {
  4. $ordersql=" order by arc.id $orderWay";
  5. }
  6. else if($orderby=="hot" || $orderby=="click") {
  7. $ordersql = " order by arc.click $orderWay";
  8. }
  9. else if($orderby=="lastpost") {
  10. $ordersql = " order by arc.lastpost $orderWay";
  11. }
  12. // add by redice
  13. // fix "order by pubdate" bug
  14. else if($orderby=="pubdate")
  15. { //开源软件:phpfensi.com
  16. $ordersql = " order by arc.pubdate $orderWay";
  17. }
  18. // end add
  19. else {
  20. $ordersql=" order by arc.sortrank $orderWay";
  21. }

修改2)直接查询archives表,查询arctiny虽然快,但是可惜arctiny表没有pubdate字段,修改include/arc.listview.class.php 650行左右,代码如下:

  1. if(ereg('hot|click|lastpost|pubdate',$orderby))
  2. {
  3. ...
  4. }
  5. //修改为
  6. if(ereg('hot|click|lastpost',$orderby)) //
  7. {
  8. ...
  9. }