主题增加统计功能,为了不使用Views插件,使用了下面的代码,使用自定义字段保存数据,不会改动数据库结构,不用安装插件,不容易出现卸载之后的缓存问题。
/*
* 获取浏览次数
*/
function getViewsStr($widget, $format = "{views} 次浏览") {
$fields = unserialize($widget->fields);
if (array_key_exists('views',$fields))
$views = (!empty($fields['views'])) ? intval($fields['views']) : 0;
else
$views = 0;
//增加浏览次数
if ($widget->is('single')) {
$views = $views + 1;
$widget->setField('views', 'str', strval($views), $widget->cid);
}
return str_replace("{views}", $views, $format);
}
把以上代码放到functions.php最后,然后就可以在各个页面通过。
<?php _e(getViewsStr($this)); /* $this 是 Widget_Archive 对象 */ ?>
输出统计次数。
应用到主题后发现不太好,每刷新一次都会重复统计浏览次数,数字大了没什么用。
所以可以通过Cookies“记住”浏览过的文章,下次再访问就不统计了,以下的代码也是放到functions.php最后。
/*
* 获取浏览次数(改进版)
*/
function getViewsStr($widget, $format = "{views} 次浏览") {
$fields = unserialize($widget->fields);
if (array_key_exists('views', $fields))
$views = (!empty($fields['views'])) ? intval($fields['views']) : 0;
else
$views = 0;
//增加浏览次数
if ($widget->is('single')) {
$vieweds = Typecho_Cookie::get('contents_viewed');
if (empty($vieweds))
$vieweds = array();
else
$vieweds = explode(',', $vieweds);
if (!in_array($widget->cid, $vieweds)) {
$views = $views + 1;
$widget->setField('views', 'str', strval($views), $widget->cid);
$vieweds[] = $widget->cid;
$vieweds = implode(',', $vieweds);
Typecho_Cookie::set("contents_viewed",$vieweds);
}
}
return str_replace("{views}", $views, $format);
}
1、文章版权归作者所有,未经允许请勿转载。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505
你可能也喜欢
- ♥ 开启Typecho网站gzip压缩的方法06/13
- ♥ 限制Typecho网站首页摘要字数+显示图片的方法06/13
- ♥ Typecho在文章中插入广告的教程06/15
- ♥ Typecho中常用的调用函数06/13
- ♥ Typecho复制时加版权说明的教程06/14
- ♥ Typecho博客显示那年今日的教程06/18