前言
PbootCms默认的日期标签可以使用style=Y-m-d形式定制日期格式。这不是本着把扩展标签玩出花样的目的来搞一搞事情。(当然也是给各位做一个学习参考)
我想要的效果是,发布时间可以显示:
刚刚
1小时前;
昨天几点几分;
前天几点几分;
年月日几点几分;
这样的一个个性化日期效果,具体效果可以看本文上方的标题。
开撸
主要功能的实现代码
//转换日期
private function transtime(){
$pattern=’/{transtimes?(([^}]+))}/’;
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扩展控制器源码分享。
好了,收工。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/115546.html<