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])} 记得把@去掉哦,我这里加@是防止被解析掉,你们看不到效果。
转载请注明: 织梦模板 » PbootCms扩展个性化日期调用