欢迎来到资源库(www.zyku.net)

DedeCMS

当前位置:首页 > CMS教程 > DedeCMS > 发布时间

织梦DedeCMS调用发布时间为某个时间前的文章实现方法

时间:2018-08-14|栏目: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)"/}

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

(资源库 www.zyku.net)

关于我们 | 版权申明 | 寻求合作 |

重要申明:本站所有的文章、图片、评论等内容,均由网友发表或上传并维护或收集自网络,仅供个人学习交流使用,版权归原作者所有。

如有侵犯您的版权,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:95148658 | 邮箱:mb8#qq.com(#换成@)

苏ICP备2020066115号-1

本网站由提供CDN加速/云存储服务