Typecho实现今日更新文章数调用
在模板你要放的位置加上以下代码
<?php
$today = date('Y-m-d');
$nextDay = date('Y-m-d', strtotime('+1 day'));
$query = $this->db->select()->from('table.contents')
->where('created >= ?', strtotime($today))
->where('created < ?', strtotime($nextDay))
->where('type = ?', 'post')
->where('status = ?', 'publish');
$results = $this->db->fetchAll($query);
$postsToday = count($results);
echo "今天更新的文章数:" . $postsToday;
?>
你以为这就完了?
上面只是最基础的版本
下面是进阶版
打开functions.php 在最后加上下面这一段
function getTodayPostCount() {
$today = date('Y-m-d');
$nextDay = date('Y-m-d', strtotime('+1 day'));
$query = Typecho_Db::get()->select()->from('table.contents')
->where('created >= ?', strtotime($today))
->where('created < ?', strtotime($nextDay))
->where('type = ?', 'post')
->where('status = ?', 'publish');
$results = Typecho_Db::get()->fetchAll($query);
$postsToday = count($results);
return $postsToday;
}
然后在你要调用的地方加入 以下代码
<?php echo "今天更新的文章数:" . getTodayPostCount(); ?>
到了这里你以为就完了?当然不是 我还有高级版
还是在functions.php 加入以下代码,记得进阶和高级只能选一个。。。别2段代码都复制进去了
function getTodayPostCount() {
$cacheFilePath = __DIR__ . '/cache/today_post_count.html';
$cacheExpire = 3 * 60 * 60; // 3小时有效期
if (file_exists($cacheFilePath) && time() - filemtime($cacheFilePath) < $cacheExpire) {
return file_get_contents($cacheFilePath);
} else {
$todayPostCount = calculateTodayPostCount(); // 调用之前定义的获取当天文章数的函数
// 将结果写入缓存文件
file_put_contents($cacheFilePath, $todayPostCount);
return $todayPostCount;
}
}
function calculateTodayPostCount() {
$today = date('Y-m-d');
$nextDay = date('Y-m-d', strtotime('+1 day'));
$query = Typecho_Db::get()->select()->from('table.contents')
->where('created >= ?', strtotime($today))
->where('created < ?', strtotime($nextDay))
->where('type = ?', 'post')
->where('status = ?', 'publish');
$results = Typecho_Db::get()->fetchAll($query);
$postsToday = count($results);
return $postsToday;
}
记得在模板所在的文件夹里面建一个cache文件夹。缓存文件就存在这里了
然后在你要调用的地方加入 以下代码
<?php echo "今天更新的文章数:" . getTodayPostCount(); ?>
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。