在主题的的functions.php文件加入代码:

// 获取文章的访问次数
function get_post_view($archive){
    
    $cid = $archive->cid;
    $db = Typecho_Db::get();
    $prefix = $db->getPrefix();
    if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')))) {
        $db->query('ALTER TABLE `' . $prefix . 'contents` ADD `views` INT(10) DEFAULT 0;');
        echo '- 次';
        return;
    }
    $row = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid));
    if ($archive->is('single')) {
        $views = Typecho_Cookie::get('extend_contents_views');
        if(empty($views)){
            $views = array();
        }else{
            $views = explode(',', $views);
        }
        if(!in_array($cid,$views)){
            $db->query($db->update('table.contents')->rows(array('views' => (int) $row['views'] + 1))->where('cid = ?', $cid));
            array_push($views, $cid);
            $views = implode(',', $views);
            Typecho_Cookie::set('extend_contents_views', $views); //记录查看cookie
            $row['views'] += 1; //添加当次的访问次数
        }
    }

    // 处理次数 单位
    $poke = '';
    $count = $row['views'];
    if ($count>=10000) {
        $count /= 10000;
        $poke=sprintf('%.2f 万次',$count);
    } else if($count>=1000){
        $count /= 1000;
        $poke=sprintf('%.1f 千次',$count);
    }else{
        $poke=sprintf('%.0f 次',$count);
    }

    echo $poke;
}

随后在需要统计次数的地方加入代码:

<li>
  <?php _e('阅读: '); ?>
  <?php get_post_view($this) ?>
</li>
⚠ 本文著作权归作者享有,未经作者书面授权,禁止以任何目的、任何形式转载,本声明具有法律效力,作者保留法律范围内的一切权利。



点击加载评论