广告投放

Typecho 免插件实现文章浏览次数统计

目录

    Typecho 免插件实现文章浏览次数统计
    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 对象 */ ?>

    Copy

    输出统计次数。
    应用到主题后发现不太好,每刷新一次都会重复统计浏览次数,数字大了没什么用。
    所以我就通过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);
    }

    Copy

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

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

    给TA打赏
    共{{data.count}}人
    人已打赏
    广告位招租919838898
    0 条回复 A文章作者 M管理员
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    有新私信 私信列表
    搜索