Typecho 添加文章阅读量
实现效果:文章详情页访问自动累加阅读量,可自定义显示「暂无阅读 / 阅读量: xx」,无需安装插件,直接代码实现。
步骤 1:在主题 functions.php 加入统计函数
进入后台,外观 → 编辑当前主题,找到 functions.php 文件,把下面完整代码粘贴到文件末尾。
function Postviews($archive) {
// 获取数据库实例
$db = Typecho_Db::get();
// 从归档对象中获取当前文章的cid(内容ID)
$cid = $archive->cid;
// 检查数据库表'table.contents'中是否存在'views'列
if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')))) {
// 如果不存在,则添加一个名为'views'的列,默认值为0
$db->query('ALTER TABLE `'.$db->getPrefix().'contents` ADD `views` INT(10) DEFAULT 0;');
}
// 查询当前文章的阅读量
$exist = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid))['views'];
// 如果当前页面是单篇文章页面
if ($archive->is('single')) {
// 更新数据库,将该文章的阅读量加1
$db->query($db->update('table.contents')
->rows(array('views' => (int)$exist + 1))
->where('cid = ?', $cid));
// 更新$exist变量以反映新的阅读量
$exist = (int)$exist + 1;
}
// 输出阅读量,如果阅读量为0则显示“暂无阅读”,否则显示具体的阅读数量
echo $exist == 0 ? ' 暂无阅读' : ' 阅读量: '.$exist;
}步骤 2:调用函数,显示阅读量
打开主题的 post.php(文章单页模板),找到你希望展示阅读量的位置,例如发布时间、分类标签附近,插入调用代码:
<?php Postviews($this); ?>示例参考位置:
<div class="post-meta">
<?php $this->date(); ?>
<?php $this->category(','); ?>
<?php Postviews($this); ?>
</div>保存 post.php,访问任意文章,刷新页面即可看到阅读量数字上涨。