Popularity Contest 及其扩展应用
June 20th, 2007 at 01:02am 雪山飞猪
在前面关于 WordPress 统计插件:Counterize II 中提到过 Popularity Contest 这个插件,这是一个我非常喜欢的插件。我想很多人都用过这个插件,而且基本上都不会有任何使用上的问题,因为这个插件很容易安装和使用。所以今天我会除了基本介绍下这个插件之外,然后谈谈怎么扩展使用这个插件。
描述
Popularity Contest 这个插件能够统计你的日志在日志,分类和存档各个页面的被浏览次数,以及留言和 trackbacks 的条数,然后通过这些数据来决定你的那些日志是最受欢迎的。对于每种类型的浏览和反馈,这个插件都会赋予一个数值,通过这些赋予的值用来创建每篇文章的 ‘流行度,并且这个值是可以更改的。
安装和使用
下载,然后上传 popularity-contest.php 文件到你的插件目录下,激活就已经安装完毕。安装之后,你可以到 Options > Popularity 修改每种类型的浏览和反馈的比重值。
安装之后就会在 Dashboard 下就会生成一个 Most Popular Posts 的页面,一段时间之后就可以在这个页面,看到详细信息,你首先看到的是总体上最流行的前50篇日志,然后是各种情况下浏览和反馈前10名的日志,以及各个 分类下最流行前10名的日志和各个时间段内最流行的文章,总之显示的信息,非常丰富。
另外在每篇日志下面都会显示 ‘Popularity: n%’ 和 ‘[?]‘ 。前面显示的是的这篇日志的流行度,后面的则是帮助信息。如果你不喜欢,可以让它们都不显示,办法是把插件中的 @define(’AKPC_SHOWPOP’, 1); 和 @define(’AKPC_SHOWHELP’, 1); 中的1改成0即可。
扩展应用
如果你是经常浏览本网站的时候,肯定注意到在每篇日志的信息栏上都有浏览次数,以及点击这个这个记录可以到达一个 Top-10 的页面(已取消链接)。很多人问我这是不是通过插件(有个 Post Views Plus 的插件可以实现这个功能)实现的,其实这个效果就是通过这个插件扩展应用的。
第1:创建函数 Get Post Views
查看 Popularity Contest 这个插在数据库中生成的表,可以知道,改表就是以 post_id 为 ID,其他项目为各种情况下浏览次数。如果我们在主题下的 functions.php 文件中创建个函数并以 post_id 为参数就可以调用出这篇日志被浏览次数。函数如下:
/** * Function Get Post Views * ------------------------------------------------------ * Get view for every post, this function is base on the plugins most popular posts */ function get_post_views ($post_id) { global $wpdb, $table_prefix; $sql = "SELECT single_views, feed_views FROM ". $table_prefix ."ak_popularity WHERE post_id = $post_id"; $views = $wpdb->get_results($sql); if ($views) { $view = $views[0]->single_views + $views[0]->feed_views; echo $view . ' Views'; } }
以上这个函数获取每篇日志下的具体页面和 Feed 的浏览数,你也可以获取其多的浏览数,把它加入其中。
然后在每篇日志的信息栏上输入以下代码:<?php if (function_exists(’get_post_views‘)) get_post_views ($post->ID); ?>
你需要在 single.php,index.php,archive.php,search.php 等等文件都输入上面这个函数才能在每个页面上显示日志的显示次数。
第2:创建页面 Top-10
Popularity Contest 这个插件还提供以下3个模板函数:
- akpc_the_popularity()
- akpc_most_popular_in_cat()
- akpc_most_popular_in_month()
由它们的名字就知道它们分别列出最流行的日志,某类别下的最流行的日志,某月份的最流行的日志。所以我们就可以通过这些来实现我们的 Top 10 页面。
创建一个叫做 most.php 的页面模板,下载该文件 most.txt,然后把后缀名改成 php 即可,可能你需要根据你的模板文件进行一些必要的修改。
最后创建一个新页面,在 page template 选择 Top 10。具体显示效果,你可以查看本站的 Top 10 页面。这样就可以显示你网站上最流行的页面,增加你网站的流量。
你使用了这个插件了吗?你对这个插件有什么建议?你有什么更好的扩展应用?或者在使用这个插件有什么问题?请给我们留言!
作者:雪山飞猪
原文链接:Popularity Contest 及其扩展应用
32 条评论 添加你的评论
Trackbacks/Pingbacks
- 想飞的鱼» Blog 存档 » Popularity Contest 及其扩展应用
- Log[2007.09.21] - 此心安处-又一村
- 漫步 » wordpress 2.3 的一些插件
- Popularity Contest的安装 | 甜蚂蚁的部落格
- Popularity Contest 及其扩展应用 | 你好XBOX hixbox.cn
- A colourful bubble? » 让Popularity Contest插件适用于WordPress 2.3


分享到 Twitter

1. 央街浪子 | June 20, 2007 at 11:02 am | #
好东东,我也正想写一篇呢,alex的这个pc插件可谓经典,还得过奖。如果想了解插件的完整做法,从自定义钩子函数,事件触发,数据库操作,admin panel和后台模块定义全有了。
唯一缺憾的地方是数据库操作似乎显得过于频繁。不知道有没有定义全局静态变量的方法,把2维统计表放在内存里,只是定期写数据库就好了。
[回复该留言]2. 雪山飞猪 | June 20, 2007 at 11:10 am | #
看来你对这个插件研究的非常深,确实这个插件读写数据库是在太多了。然后我加上我写的这个 get post views,读写数据库又更频繁了。哎,这是唯一一点不好地方,你提供的方法,我也不是很明白,不知道有没有什么达人可以提供解答!
[回复该留言]3. keke | June 20, 2007 at 1:52 pm | #
今天firefox上你的站点有问题?
[回复该留言]4. 雪山飞猪 | June 20, 2007 at 2:23 pm | #
什么问题?
[回复该留言]5. Giki | July 30, 2007 at 10:23 pm | #
不错,拿去研究~
[回复该留言]6. 酷辣客 | October 6, 2007 at 10:20 am | #
奇怪,启用后出现了如下错误:
WordPress database error: [Table 'mtx029db1.wp_ak_popularity' doesn't exist]
[回复该留言]SELECT ID, post_title FROM wp_posts LEFT JOIN wp_ak_popularity pop ON wp_posts.ID = pop.post_id WHERE post_status = ‘publish’ AND post_date < NOW() GROUP BY wp_posts.ID ORDER BY pop.total DESC LIMIT 10
7. 雪山飞猪 | October 6, 2007 at 1:09 pm | #
ak_popularity 是这个插件创建的表,如果没有这个表,说明你没有安装成功!
[回复该留言]8. 酷辣客 | October 6, 2007 at 4:05 pm | #
谢谢!我怎么去创建这个表呢?禁用后重新启动显示:
[回复该留言]Table ‘mtx029db1.wp_ak_popularity’ doesn’t exist on line: 340
说明没有成功,我是WP2.3版,空间是dreamhost
9. 雪山飞猪 | October 6, 2007 at 4:08 pm | #
编辑插件,找到创建这个表的SQL语句,直接在数据库中执行!
[回复该留言]10. yltfy | October 21, 2007 at 1:25 pm | #
这个top10的页面我下载下来后出错了.不知道要放在哪个目录里面?
[回复该留言]Fatal error: Call to undefined function get_header() in G:\IIS\greenregion\wp-content\themes\green\top10.php on line 11
11. uno | October 30, 2007 at 6:22 pm | #
还有个文件 sidebar.php 是干嘛用的?
[回复该留言]12. 大猫 | November 7, 2007 at 5:12 pm | #
很好
[回复该留言]很强大…
酷
13. 世纪大厦 | November 14, 2007 at 2:16 pm | #
鱼哥,帮我写个sidebar的widgets调用最热文章的函数么?我不会啊,按您说的fuctions不行,我用的是“Limau Orange 0.1 by Bob”模板
[回复该留言]14. 雪山飞猪 | November 14, 2007 at 4:31 pm | #
@世纪大厦 请查看我最新的两篇关于如何写 widget 插件的教程。谢谢。链接请自行搜索!
[回复该留言]15. 黑色饼干 | December 11, 2007 at 12:38 am | #
用上了,谢谢
[回复该留言]16. kusonico | December 18, 2007 at 10:59 pm | #
确实非常好的一个插件,
因为是用wp来做cms,所以需求和blog稍有不同
对我来说最需要的就是能在分类里显示当前类别里浏览最多的文章,
因为在post view里不知道怎么实现所以换了这个插件
遗憾的是不知道怎么改为single页面里也能显示当前类别里浏览最多的文章
[回复该留言]还有是否有参数可以在TOP10列表的文章后显示浏览次数?
17. 雪山飞猪 | December 19, 2007 at 11:36 am | #
Popularity Contest 不能做到你说的形似!
[回复该留言]18. kusonico | December 22, 2007 at 11:24 pm | #
唉不懂PHP真是郁闷啊…
[回复该留言]今天乱凑了一通总算暂时搞定在single页面显示当前类别里浏览最多的文章
前面加上这一段
$categories = get_the_category();
foreach ($categories as $category) :
后面这样写
<?php akpc_most_popular_in_cat($limit = 10, $before = '', $after = '',$cat_ID = $category->term_id); ?>
暂且不管是否不规范.暂时能用
19. kusonico | December 22, 2007 at 11:28 pm | #
雪山飞猪能否升级一下你给出的most.php呢,
[回复该留言]现在已经是WP2.3.1了,数据库结构变了很多
我正想生成一个top 10页面
列出所有分类的top 10文章,不知如何修改
20. 雪山飞猪 | December 31, 2007 at 2:48 am | #
我已经决定放弃使用这个插件了!
[回复该留言]21. kusonico | January 5, 2008 at 4:44 pm | #
我也准备放弃了
[回复该留言]单页数据库查询次数80次……还好现在访问人数以个位计
还是用回postviews
而且上次搞定分类页面显示当前分类top10之后,Popularity Contest 也用不着了
22. calvin | February 11, 2008 at 6:15 pm | #
@define(’AKPC_SHOWPOP’, 1); 改为0 是隐藏人气显示
@define(’AKPC_SHOWHELP’, 1); 这个改为0才是 隐藏 帮助问号
[回复该留言]23. 悠悠吖吖 | May 19, 2008 at 12:07 pm | #
看来不错 值得研究研究 不过就是不知道放在WP之后会不会出现问题
[回复该留言]24. 漩涡眸 | May 24, 2008 at 3:01 pm | #
Popularity Contest
[回复该留言]由于插件产生了一个致命错误,该插件无法被启用。
无助..
25. 摩摩诘 | June 30, 2008 at 4:19 am | #
修改Popularity-contest.php的第59行require(’../../wp-blog-header.php’);为 require(’../wp-blog-header.php’);就可以了
[回复该留言]26. lastwest | June 1, 2008 at 9:10 pm | #
启动后在查看浏览量页面出现大量如下错误,不知何故?
Warning: Division by zero in /home/bxr57917/public_html/wp-content/plugins/popularity-contest.php on line 1273
wp:2.5.1
[回复该留言]插件版本:popularity-contest.1.3b4