• 博主:孽 (云趣科技)
  • QQ:点击这里给我发消息
  • 微信:dylanv
  • 业务:切图,建站,二开,运维
文章目录

PbootCms扩展玩出花之个性化日期

PbootCms扩展玩出花之个性化日期
稿件作者 CMS博客 2020-04-20 08:48 PbootCMS教程 5960

前言

PbootCms默认的日期标签可以使用style=Y-m-d形式定制日期格式。这不是本着把扩展标签玩出花样的目的来搞一搞事情。(当然也是给各位做一个学习参考)

我想要的效果是,发布时间可以显示:

刚刚

1小时前;

昨天 几点几分;

前天 几点几分;

年月日 几点几分;

这样的一个个性化日期效果,具体效果可以看本文上方的标题。

开撸

主要功能的实现代码

    //转换日期
    private function transtime(){
        $pattern = '/\{transtime\s?\(([^\}]+)\)\}/';
        if (preg_match($pattern, $this->content, $matches)) {
            $this->content = preg_replace_callback(
                $pattern,
                function($matches){
                    $time = strtotime($matches[1]);
                  	$otime = date("Y-m-d H:i",$time);
                    $rtime = date("m-d H:i",$time);
                    $htime = date("H:i",$time); 
                    $time = time() - $time;
                    if ($time < 60){
                        $str = '刚刚';
                    }
                    elseif ($time < 60 * 60){
                        $min = floor($time/60);
                        $str = $min.'分钟前';
                    }elseif ($time < 60 * 60 * 24){
                        $h = floor($time/(60*60));
                        $str = $h.'小时前 '.$htime;
                    }elseif ($time < 60 * 60 * 24 * 3){
                        $d = floor($time/(60*60*24));
                        if($d==1)
                            $str = '昨天 '.$rtime;
                        else
                            $str = '前天 '.$rtime;
                    }else{
                        $str = $otime;
                    }
                    return $str;
                },
                $this->content);
        }
    }

然后将该方法加入到run中执行即可。

    /* 必备启动函数 */
    public function run($content)
    {
        // 接收数据
        $this->content = $content;
        
        //****************这里省略其他扩展,自行补充
        
        //转换日期
        $this->transtime();

        // 返回数据
        return $this->content;
    }

调用方式

详情页:

{@transtime({content:date})}  记得把@去掉哦,我这里加@是防止被解析掉,你们看不到效果。

列表页(list标签中)

{@transtime([list:date])} 记得把@去掉哦,我这里加@是防止被解析掉,你们看不到效果。


注意事项

1、上面调用的@符号一定记得删掉。

2、调整扩展标签的执行顺序,之前的文章里有提到,请翻阅PbootCms扩展控制器源码分享

好了,收工。


联系客服

请使用QQ扫码
请使用微信扫码
回复时间:工作日下午4点30以后;周六周日不限。
  • 分享:

文章评论(审核通过可见)

说点什么
共有1条评论

匿名用户

  • 2020-06-23 13:35:32
  • Windows 10
sixsix

CMS博客

  • 2020-06-24 02:52:21