帝国CMS将发布时间改为多少时间之前

见过很多漂亮的博客,他们的文章内容发布时间显示的很有意思,并不是常规的文章发布时间样式,而是几分钟之前、几个小时之前、几天之前甚至是几年之前,但是任何网站程序的默认时间样式,都是一个简单的格林尼治时间,那他们是如何实现的呢!毋庸置疑的,他们修改了程序代码,今天我们就来修改一下帝国CMS的程序代码,把帝国CMS的时间样式修改成几分钟之前、几个小时之前、几天之前甚至是几年之前的样式。

把以下的内容复制到 /e/class/userfun.php 文件里,放在<?php?>之间就可以

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function user_time($tm, $num) {
if ($num == 1) {
$tm = strtotime($tm);
}
$cur_tm = time();
$dif = $cur_tm - $tm;
$pds = array('秒', '分钟', '小时', '天', '周', '个月', '年');
$lngh = array(1, 60, 3600, 86400, 604800, 2630880, 31570560);
for ($v = sizeof($lngh) - 1; ($v >= 0) && (($no = $dif / $lngh[$v]) <= 1); $v--);
if ($v < 0) $v = 0;
$_tm = $cur_tm - ($dif % $lngh[$v]);
$no = floor($no);
$x = sprintf("%d%s", $no, $pds[$v]);
return $x."前";
}

上面的代码放置位置浅显易懂,只需要有点儿PHP尝试就放不错,实在不行就放在代码的最后面,然后在帝国CMS模版里放入相应的时间标签来调用,其实代码修改好修改,就是调用的时候有些朋友摸不着头脑,如果是在标签模板、列表模板中的调用,你需要

1
'.user_time($r[newstime],0).'

如果您是在内容页中调用,您需要使用如下代码

1
<?=user_time($navinfor[newstime],0)?>

当然了,如果在在评论JS调用模板调用,你需要在评论JS调用模板里把

1
[!----pltime--]

修改成

1
<?=user_time($r[saytime],1)?>

然后打开e\pl\more\index.php ,在代码之中找到

1
require("../../class/connect.php");

打开文件之后就会发现,这段代码在最前面,是引进一个PHP文件的意思,然后在这段代码的下面添加

1
require("../../class/userfun.php");

同样是引入PHP文件的意思,就是把我们修改的PHP文件引进来,修改完成之后,大家保存一下替换程序文件,如果不能显示,需要在后台进行一下数据更新或者模板文件的缓存更新,总之感觉帝国CMS怪怪的,就是更新有点儿摸不着头脑。