DedeCMS显示发布时间为多少时间前的如何实现方法

无论你活成什么样貌,背地里都会有人对你说三道四。不申辩不计较一笑了之,其实就是最好的蔑视。

织梦的文章发布时间调用格式一般分为一下这些:

	
	[field:pubdate function="MyDate('Y-m-d',@me)"/]
	2013-12-17
	[field:pubdate function=MyDate('m-d',@me)/]
	12-17
	[field:pubdate function=MyDate('y-m-d',@me)/]
	13-12-17
	[field:pubdate function='strftime("%y-%m-%d %H:%M:%S",@me)'/]
	13-12-17 10:35:21
	[field:pubdate function='strftime("%m-%d %H:%M:%S",@me)'/]
	12-17 10:35:21
	[field:pubdate function='strftime("%y年%m月%d日",@me)'/]
	13年12月17日
	[field:pubdate function='strftime("%Y年%m月%d日 %H点%M分%S秒",@me)'/]
	13年12月17日 12点12分30秒
	

有的时候,我们想做到不直接显示具体时间,而是以几天前、几月前这样的时间间隔方式来显示, 更利于让访客直观地看到文章的发布时段,以上的调用方法则不适用了。

余斗教大家如何实现显示发布时间为多少时间前,主要有两种方法。

一、模板直接写PHP语句

	
	[field:pubdate runphp='yes']
	$today = Floor(time()/(3600 * 24));
	$senday= Floor(@me/(3600 * 24));
	$updays = $today-$senday;
	if($updays >= 30 && $updays < 60) @me="1个月前";
	elseif($updays >= 60 && $updays < 90) @me="2个月前";
	elseif($updays >= 90 && $updays < 120) @me="3个月前";
	elseif($updays >= 120 && $updays < 150) @me="4个月前";
	elseif($updays >= 150 && $updays < 180) @me="5个月前";
	elseif($updays >= 180 && $updays < 210) @me="6个月前";
	elseif($updays >= 210 && $updays < 240) @me="7个月前";
	elseif($updays >= 240 && $updays < 270) @me="8个月前";
	elseif($updays >= 270 && $updays < 300) @me="9个月前";
	elseif($updays > 300 && $updays < 330) @me="10个月前";
	elseif($updays > 330 && $updays < 360) @me="11个月前";
	elseif($updays >= 360) @me="一年前";
	elseif($updays==0) @me = "今日";
	else @me = $updays."天前";
	[/field:pubdate]
	

二、自定义函数

在include/extend.func.php文件中加入以下代码:

	
	    //文章发布多少时间前
	    function tranTime($time) {
	    $today = Floor(time()/(3600 * 24));
	    $senday= Floor($time/(3600 * 24));
	    $updays = $today-$senday;
	    if($updays==0)
	    $str = '今天';
	    elseif ($updays >=1 && $updays < 31) {
	        $str = $updays.'天前 ';
	    }
	
	    elseif ($updays >= 31&& $updays < 365) {
	        $m = floor($updays/ 31);
	        $str = $m.'月前 ';
	    }
	      elseif ($updays >= 31&& $updays < 365) {
	        $y = floor($updays/ (31* 365));
	        $str = $y.'年前 ';
	    }
	    else {
	        $str = $rtime;
	    }
	    return $str;
	                           }
	

如果要显示几分钟和几小时,则自行加入判断函数

	
	    elseif ($updays >0 && $updays < 1 ) {
	    $h = floor($updays * 24);
	    $str = $h.'小时前 ';
	    }
	

调用方法

	
	列表页:[field:pubdate function="tranTime(@me)"/]
	内容页:{dede:field.pubdate function="tranTime(@me)"/}
	

Tips:以上两种方法都可以实现调用,第一种方法是直接把php语法写入模版中,会显得文件比较 冗余,余斗建议使用第二种自定函数的方式,简单明了。

这两个方法都是静态调用,显示的结果也是最近一次更新后的时间来算的,算是一个小Bug。

本文DedeCMS显示发布时间为多少时间前的如何实现方法到此结束。在我们的记忆中,每一次“错过”都是完美的:或是浪漫的情感历程,或是平步青云的官运,或是唾手可得的财气。但同时,我们也许错过了疾病,错过了灾难,错过了失败,错过了与己无益的是与非。所以,不必为错过叹息,因为在叹息中,我们又将错过今日的完美。小编再次感谢大家对我们的支持!

标签: 时间为