温馨提醒

如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢

本文最后更新于2023年12月27日,已超过 180天没有更新

分享typecho阅读次数统计代码,并对此进行优化加入了cookie验证,重复刷新页面也只会增加一次阅读次数。

将下面这段代码加到functions.php中:

/**
* 阅读统计
* 调用
*www.xingkongweb.com/
*/
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')) {
$db->query($db->update('table.contents')->rows(array('views' => (int) $row['views'] + 1))->where('cid = ?', $cid));
}
echo $row['views'];
}

然后将下面这段代码加入到需要显示阅读次数的地方:

<?php get_post_view($this) ?>

这样就实现了不用插件来显示文章的阅读次数统计。

怎么优化,使重复刷新不增加浏览次数呢?最简单的就是加入cookie验证,将文章的第一段代码用下面的代码替换即可:

/**
* 阅读统计
* cookie防止重复刷新版
*/
function get_post_view($archive)
{
  
    $cid    = $archive->cid;
    $db     = Typecho_Db::get();
    $prefix = $db->getPrefix();
    if (!array_key_exists('viewsNum', $db->fetchRow($db->select()->from('table.contents')))) {
        $db->query('ALTER TABLE `' . $prefix . 'contents` ADD `viewsNum` INT(10) DEFAULT 0;');
        echo 0;
        return;
    }
    $row = $db->fetchRow($db->select('viewsNum')->from('table.contents')->where('cid = ?', $cid));
    if ($archive->is('single')) {
        $viewsNum = Typecho_Cookie::get('extend_contents_viewsNum');
        if(empty($viewsNum)){
            $viewsNum = array();
        }else{
            $viewsNum = explode(',', $viewsNum);
        }
    if(!in_array($cid,$viewsNum)){
       $db->query($db->update('table.contents')->rows(array('viewsNum' => (int) $row['viewsNum'] + 1))->where('cid = ?', $cid));
        array_push($viewsNum, $cid);
            $viewsNum = implode(',', $viewsNum);
            Typecho_Cookie::set('extend_contents_viewsNum', $viewsNum); //记录查看cookie
        }
    }
    echo $row['viewsNum'];
}

 

历史上的今天
12月
27
    抱歉,历史上的今天作者很懒,什么都没写!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。