现在时间是2022年11月27日的凌晨一点左右,我在26日联系handsome作者购买了主题
研究了快一天,一边看着开发文档一边对博客进行修改,目前博客进行美化了大部分,现在看着还算舒适
handsome主题我最喜欢的一个功能就是时光机功能,可以像QQ空间那样发动态,觉得实在高级
在研究时光机功能的时候看到了一个有趣的操作

后台选择设置——评论——评论日期格式 内填写natural

可以开启 时间格式化
举一反三
我想让首页文章和文章内页的时间也显示成这样
可是handsome主题并没有这个功能(也可能是我没有找到或者没设置对)
我百度了一些资料

public static function dateWord($from){
$now = time();
$between = $now - $from;
/** 如果是一天 */
if ($between >= 0 && $between < 86400 && date('d', $from) == date('d', $now)) {
/** 如果是一小时 */
if ($between < 3600) {
/** 如果是一分钟 */
if ($between < 60) {
if (0 == $between) {
return _t('刚刚');
} else {
return str_replace('%d', $between, _n('刚刚', '%d秒前', $between));
}
}
$min = floor($between / 60);
return str_replace('%d', $min, _n('1分钟前', '%d分钟前', $min));
}
$hour = floor($between / 3600);
return str_replace('%d', $hour, _n('1小时前', '%d小时前', $hour));
}
/** 如果是昨天 */
if ($between > 0 && $between < 172800 
&& (date('z', $from) + 1 == date('z', $now)                             // 在同一年的情况 
|| date('z', $from) + 1 == date('L') + 365 + date('z', $now))) {    // 跨年的情况
return _t('昨天 %s', date('H:i', $from));
}
/** 如果是一个星期以内 */
if ($between > 0 && $between < 604800) {
$day = floor($between / 86400);
return str_replace('%d', $day, _n('1天前', '%d天前', $day));
}
/** 如果是一个星期以上 */
if ($between > 0 && $between < 2592000){
$week = floor($between / 648000);
return str_replace('%d', $week, _n('1周前', '%d周前', $week));
}
/** 如果是一年以内 */
if ($between > 0 && $between < 31557600){
$month = floor($between / 2629800);
return str_replace('%d', $month, _n('1个月前', '%d个月前', $month));
}
/** 如果是一年以上 */
if (date('Y', $from) == date('Y', $now)) {
return date(_t('Y年n月j日'), $from);
}
return date(_t('Y年m月d日'), $from);
}

这个代码可以实现时间词义话 显示几秒前 几分钟前

非常重要!!!修改前请一定备份文件 在操作过程中遇到问题可以发邮件向我提问1193318383@qq.com

首先实现首页文章词义话

  1. 在handsome/libs/Content.php
  2. 找到645行1127code1.png

$dateString = date(I18n::dateFormat(), $parameterArray['date']);

改为

$dateString = I18n::dateWord($parameterArray['date']);
  1. 在handsome/libs/I18n.php
  2. 在第193行插入下方的词义话时间代码

    public static function dateWord($from){
    
$now = time();
    $between = $now - $from;
    /** 如果是一天 */
    if ($between >= 0 && $between < 86400 && date('d', $from) == date('d', $now)) {
    /** 如果是一小时 */
    if ($between < 3600) {
    /** 如果是一分钟 */
    if ($between < 60) {
    if (0 == $between) {
    return _t('刚刚');
    } else {
    return str_replace('%d', $between, _n('刚刚', '%d秒前', $between));
    }
    }
    $min = floor($between / 60);
    return str_replace('%d', $min, _n('1分钟前', '%d分钟前', $min));
    }
    $hour = floor($between / 3600);
    return str_replace('%d', $hour, _n('1小时前', '%d小时前', $hour));
    }
    /** 如果是昨天 */
    if ($between > 0 && $between < 172800 
    && (date('z', $from) + 1 == date('z', $now)                             // 在同一年的情况 
    || date('z', $from) + 1 == date('L') + 365 + date('z', $now))) {    // 跨年的情况
    return _t('昨天 %s', date('H:i', $from));
    }
    /** 如果是一个星期以内 */
    if ($between > 0 && $between < 604800) {
    $day = floor($between / 86400);
    return str_replace('%d', $day, _n('1天前', '%d天前', $day));
    }
    /** 如果是一个星期以上 */
    if ($between > 0 && $between < 2592000){
    $week = floor($between / 648000);
    return str_replace('%d', $week, _n('1周前', '%d周前', $week));
    }
    /** 如果是一年以内 */
    if ($between > 0 && $between < 31557600){
    $month = floor($between / 2629800);
    return str_replace('%d', $month, _n('1个月前', '%d个月前', $month));
    }
    /** 如果是一年以上 */
    if (date('Y', $from) == date('Y', $now)) {
    return date(_t('Y年n月j日'), $from);
    }
    return date(_t('Y年m月d日'), $from);
    }

到目前已经实现首页文章时间词义话

接下来实现文章内页词义话

文章内页的词义话可以直接调用typecho自带的函数

但是官方提供的代码没有“周”和“月”,完善了一下代码,添加了“周”和“月”,只有1年以及1年以上的时间才会显示完整时间。

  1. 找到var/Typecho/I18n.php
  2. 将代码第82-129行代码public static function dateWord(int $from, int $now): string替换为
public static function dateWord($from, $now)
{
    $between = $now - $from;
    /** 如果是一天 */
    if ($between >= 0 && $between < 86400 && date('d', $from) == date('d', $now)) {
    /** 如果是一小时 */
    if ($between < 3600) {
    /** 如果是一分钟 */
    if ($between < 60) {
    if (0 == $between) {
    return _t('刚刚');
    } else {
    return str_replace('%d', $between, _n('刚刚', '%d秒前', $between));
    }
    }
    $min = floor($between / 60);
    return str_replace('%d', $min, _n('1分钟前', '%d分钟前', $min));
    }
    $hour = floor($between / 3600);
    return str_replace('%d', $hour, _n('1小时前', '%d小时前', $hour));
    }
    /** 如果是昨天 */
    if ($between > 0 && $between < 172800 
    && (date('z', $from) + 1 == date('z', $now)                             // 在同一年的情况 
    || date('z', $from) + 1 == date('L') + 365 + date('z', $now))) {    // 跨年的情况
    return _t('昨天 %s', date('H:i', $from));
    }
    /** 如果是一个星期以内 */
    if ($between > 0 && $between < 604800) {
    $day = floor($between / 86400);
    return str_replace('%d', $day, _n('1天前', '%d天前', $day));
    }
    /** 如果是一个星期以上 */
    if ($between > 0 && $between < 2592000){
    $week = floor($between / 648000);
    return str_replace('%d', $week, _n('1周前', '%d周前', $week));
    }
    /** 如果是一年以内 */
    if ($between > 0 && $between < 31557600){
    $month = floor($between / 2629800);
    return str_replace('%d', $month, _n('1个月前', '%d个月前', $month));
    }
    /** 如果是一年以上 */
    if (date('Y', $from) == date('Y', $now)) {
    return date(_t('Y年n月j日 H:i'), $from);
    }
    return date(_t('Y年m月d日 H:i'), $from);
    }


修改文章内页代码

  1. 找到第50行内容

code11127.jpg

<li class="meta-date" data-toggle="tooltip" data-html="true" data-original-title="<?php $this->date(I18n::dateFormat("detail")); ?>"><span class="post-icons"><i data-feather="clock"></i></span><span class="sr-only"><?php _me("发布时间:") ?></span><time class="meta-value"><?php $this->date(I18n::dateFormat()); ?></time></li>


替换为

<li class="meta-date" data-toggle="tooltip" data-html="true" data-original-title="<?php $this->date(I18n::dateFormat("detail")); ?>"><span class="post-icons"><i data-feather="clock"></i></span><span class="sr-only"><?php _me("发布时间:") ?></span><time class="meta-value"><?php $this->dateWord(); ?></time></li>

目前为止功能实现完毕
首页文章
演示1.png

文章内页

演示2.jpg

现在看看效果图

请一步步按照教程修改

最后修改:2022 年 11 月 27 日
如果觉得我的文章对你有用,请随意赞赏