我觉得这段代码样式比我之前的那个更加好看

开头

可以在Typecho博客上展示当前文章日期在过去几年的今天所发的其他文章
之前在一些博客上看到这个那年今日,感觉还不错,就借鉴了一下,并进行优化处理,且兼容了sqlite。


代码

1.将以下代码放入functions.php

function historyToday($created)
{
 $date = date('m/d', $created);
 $date_m = date('m月', $created);
 $date_d = date('d日', $created);
 $time = time();
 $db = Typecho_Db::get();
 $prefix = $db->getPrefix();
 $limit = 5;//显示多少篇文章
  $adapter = $db->getAdapterName();
  if ("Pdo_SQLite" === $adapter || "SQLite" === $adapter) {
 $sql = "SELECT * FROM `{$prefix}contents` WHERE strftime('%m-%d',datetime(datetime(created, 'unixepoch'))) = '{$date}' and created <= {$time} and created != {$created} and type = 'post' and status = 'publish' and (password is NULL or password = '') LIMIT ".$limit;
  }
  if ("Pdo_Mysql" === $adapter || "Mysql" === $adapter || "Mysqli" === $adapter) {
       $sql = "SELECT * FROM `{$prefix}contents` WHERE DATE_FORMAT(FROM_UNIXTIME(created), '%m/%d') = '{$date}' and created <= {$time} and created != {$created} and type = 'post' and status = 'publish' and (password is NULL or password = '') LIMIT ".$limit;
  }
 $result = $db->query($sql);
 $historyTodaylist = [];
 if ($result instanceof Traversable) {
         foreach ($result as $item) {
             $item = Typecho_Widget::widget('Widget_Abstract_Contents')->push($item);
             $title = htmlspecialchars($item['title']);
         $permalink = $item['permalink'];
         $date = date('Y年m月d日',$created);
         $historydate = date('Y年m月d日',$item['created']);
             $historyTodaylist[] = array(
                 "title" => $title,
                 "permalink" => $permalink,
                 "date" => $historydate
             );
 }
 }
  if (count($historyTodaylist) > 0){
   echo "<div class='bs-today'>
 <fieldset>
     <legend><h5>那年今日</h5></legend>
     <div class='today-date'><div class='today-m'>{$date_m}</div><div class='today-d'>{$date_d}</div></div><ul>
     ";
     foreach ($historyTodaylist as $item){
         echo "<li><span>{$item['date']}</span><a href='{$item['permalink']}' title='{$item['title']}' target='_blank'>{$item['title']}</a></li>";
     }
     echo "</ul></fieldset></div>";
  }
}

2.在文章页面合适的地方插入如下代码:

<?php historyToday($this->created)?>

这样就大功告成了


总结

仅展示PHP部分,至于样式则可以自己写,这里就不过多讲述

原文:适用于Typecho的那年今日代码