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

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。

分享到 :
相关推荐