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扩展控制器源码分享。
好了,收工。
CMS博客 原创,未经授权禁止转载、摘编、复制或建立镜像。
匿名用户
CMS博客