php 文章浏览数_重复计数,Typecho 免插件实现文章浏览次数统计

为了不使用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);

}

好了,完美。又省下一个插件了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个流量统计是非常简单的,但我个人觉得也是挺实用的 这个也是我目前自己站用的流量统计 为什么做这个小东西,是因为,之前我用过某个知名的流量统计,但有几天突然就打不开了, 搞的我网页的下部分也跟着打不开,网页打开进度一直显示在加载,效果很不好 也用过有的流量统计,给插了广告之类, 同时我的站也是生成HTML,做站的都知道,批量生成HTML简直是要命的,如果今天我用了某个流量统计 那天他不做了,那我那些页面里面加载的代码是不是还都得重新做次? 当然,网上如cnzz.com,51la等等统计都是很不错的,功能齐全,同时可以代表一定的客观性,总而言之 适合自己的就好! 程序很简单 可以显示显示的来访IP,地区,一个简单的曲线表,一个概述,以及来访域名,和搜索引擎关键词等 简单而实用 adminstat.asp 是管理页面,就一个 mystat.asp和stat.asp 是统计流量的文件 DATA里面当然是据库啦,据库很大,有30多MB,因为里面加了IP地址的据库,有30多万条,是我之前 商贸版IP地址查询里面,有兴趣的可以取下,以后会考虑分离掉,因为我现在自己用的是SQL的,所以不太 存在据库文件大的问题,所以这边我暂时懒得改,以后有时间把IP地址库和据库分离 调用: 当然你前面最好加上域名,比如我站里是: 关于删除历史的解释,系统会把每个访问的IP都记录下来,但为了系统效率,我们只记录3天内的详细IP 为了方便大家整合到自己的站里,我没有加任何的广告啊,还有adminstat.asp 后台管理的权限限制,如果大家要整合到自己站里 注意给访问页面添加权限

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值