拾音集

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,访问任意文章,刷新页面即可看到阅读量数字上涨。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »