温馨提醒
如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢
本文最后更新于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']; }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论0+