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


评论0+