-
Dedecms实现显示发布时间为“多少时间前”的方法
- 时间:2025-03-31 14:15:12 来源: 人气:1
在使用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语句
这种方法是在模板中直接嵌入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;
}
如果需要显示分钟或小时,可以根据需求自行添加判断逻辑。
调用方法如下:
列表页:
[field:pubdate function="tranTime(@me)" /]
内容页:
{dede:field.pubdate function="tranTime(@me)"/}
以上两种方法都可以实现时间间隔的动态显示。第一种方法虽然简单直接,但会使得模板文件显得冗余;第二种方法则更加简洁明了,推荐使用。
相关文章
-
在网站建设与维护的过程中,优化代码结构和功能是提升网站性能的重要步骤。本文将介绍如何通过自定义函数实现文章删除时自动清理相关资源的功能,从而提高系统的整洁性和存储效率。以下是具体的操作步骤及代码实现。首先, 在 `/include` 目录下创建一个名为 `extend.func.php` 的文件...2025-03-31
-
在进行图片上传操作时,用户可能会遇到302错误以及带有ERROR提示的图片上传失败问题。这些问题可能由多种原因引发,因此本文将对这些情况进行整理,以帮助大家更有效地定位并解决问题。 第一种情况:图片文件本身损坏。 这种情况会导致系统返回ERROR错误提示,不过发生概率较低。如果怀疑是图片损坏导致的...2025-03-31
-
如果您正在寻找一种高效的方法来使用Dedecms模板搭建网站或论坛,那么本文将为您提供详尽的指导。从模板解压到最终完成配置,每一步都将清晰呈现,帮助您快速掌握整个流程。 第一步:解压Dedecms模板 将下载的Dedecms模板文件解压出来,确保所有文件完整无误。如下图所示: 第二步:获取D...2025-03-31
-
Dedecms Dede 附加表自定义字段与主表文章关联方法
在使用DedeCMS开发装修网站时,设计师和设计作品之间的关联是一个重要的功能需求。通常情况下,文章(作品)的内容部分存储在主表dede_addonarticle中,而自定义字段则存储在附加表dede_archives中。为了实现这一功能,可以采用以下两种方法。 ① 根据发布人调用相关文章; ...2025-03-31