这篇文章上次修改于 225 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

此方法可不使用插件为typecho主题加入文章阅读量统计功能。

代码

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 0;
        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
        }
    }
    echo $row['views'];
}

将此代码放入typecho主题下的functions.php文件中,此代码已加入cookies验证,可防止刷新就添加统计数量。

调用方法

在需要调用的地方如index.php、post.php中的相关位置加入:
</a><span class="view"><?php get_post_view($this) ?>
这里的<span class="view">为class元素标签,可自行替换为文字。
注意:post.php中必须加入调用代码,否则无法统计阅读数量!!!

示例

[2HkNy6.png]

演示效果

[2Hkb60.png]


本文参考自:SunPma