当前位置: 主页 > 日志 > PHP >

如何让dedecms列表页按文章的pubdate排序

为什么想要按pubdate排序?

pubdate的值可以在发布、编辑文章时修改(即“发布时间”),比senddate灵活。

dedecms不支持按pubdate排序

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

include/arc.listview.class.php  600行左右如下:


		//排序方式
		$ordersql = '';
		if($orderby=="senddate" || $orderby=="id") {
			$ordersql=" order by arc.id $orderWay";
		}
		else if($orderby=="hot" || $orderby=="click") {
			$ordersql = " order by arc.click $orderWay";
		}
		else if($orderby=="lastpost") {
			$ordersql = "  order by arc.lastpost $orderWay";
		}
		else {
			$ordersql=" order by arc.sortrank $orderWay";
		}

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

需要修改两个地方:

修改1)接受pubdate排序方式。


		//排序方式
		$ordersql = '';
		if($orderby=="senddate" || $orderby=="id") {
			$ordersql=" order by arc.id $orderWay";
		}
		else if($orderby=="hot" || $orderby=="click") {
			$ordersql = " order by arc.click $orderWay";
		}
		else if($orderby=="lastpost") {
			$ordersql = "  order by arc.lastpost $orderWay";
		}
		// add by redice
		// fix "order by pubdate" bug
		else if($orderby=="pubdate")
		{
			$ordersql = "  order by arc.pubdate $orderWay";
		}
		// end add
		else {
			$ordersql=" order by arc.sortrank $orderWay";
		}

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


		if(ereg('hot|click|lastpost|pubdate',$orderby))
		{
		...
		}

修改为


		if(ereg('hot|click|lastpost',$orderby)) //
		{
		...
		}

[日志信息]

该日志于 2012-01-09 17:53 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “如何让dedecms列表页按文章的pubdate排序” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部