订阅数量统计

昨天的聚合输出乱码把me的关注点吸引到feed、rss等相关的东东方面来。虽然输出乱码的问题已经暂时解决,但me对feedburner的价值认同大幅度降低,不能再完全依靠它,再次使用其feedflare功能发现超慢之后me就更是无法留恋了。

到WP后台停掉了FeedBurner FeedSmith插件,它的作用是把所有对原生聚合输出的存取都自动转向到feedburner去。这样与feed相关的插件就只剩下Feed CountFeed Statistics了。两个都是统计订阅数的,前者针对feedburner,把由其托管的订阅数提取出来,后者则针对原生输出的订阅进行统计。me从来没有用过feedsky等其他烧录服务,因此从理论上讲这两个的统计之和应该就是“天高云淡”的总订阅数。好,下面的任务就是把总订阅数动态显示在侧栏

Feed Count的官方网站这几天一直处于维护状态,没有更详细的资料,好像也不支持widget,只提供了一个函数供调用,如下:

< ?php if (function_exists('fc_feedcount')) fc_feedcount(); ?>

另外Feed Count在WP后台提供了个性化设置界面,可以对上面函数的输出做个性化配置,但是调用该函数后的输出像这样52 位订阅者,不但是字符串不是数值,还带有链接。查看feedcount.php在源码的fc_feedcount函数中发现有这么一部分:

        if (trim($map_fc_link)!='') {
$openlink = "";
$closelink="";
}
print "

$openlink\n"; if ($map_fc_before) { print " $map_fc_before\n"; } print "$number\n"; if ($map_fc_after) { print " $map_fc_after\n"; } print "$closelink
";

并且该函数返回值为空,因为它已经把结果print了。其实me只是需要那个$number而已。用一句

return $number;

替代上面代码就OK了。
再来看Feed Statistics,其调用函数feed_subscribers源码如下:

function feed_subscribers(){
$s = FEED_STATS::how_many_subscribers();
echo $s." feed subscriber";
if ($s != 1) echo "s";
}

我们需要的是那个$s,把它返回就行了。
很好,两个数值我们都可以通过调用函数得到了,下面我们来定制输出:
直接订阅

< ?php if (function_exists('feed_subscribers'))
$stat_or=feed_subscribers();
print $stat_or; ?>

人,通过feedburner订阅

< ?php if (function_exists('fc_feedcount'))
$stat_fb=fc_feedcount();
print $stat_fb ?>

人;本站共计有

< ?php print $stat_or+$stat_fb;?>

人订阅。不过这样好像不大美观,并且内容复杂,me去feedburner网站下了两个小图标上传至服务器,效果见页面左上角,最终代码如下:

	
  • 订阅统计

  • < ?php if (function_exists('feed_subscribers')) $stat_or=feed_subscribers(); print $stat_or; ?>人,
     
    < ?php if (function_exists('fc_feedcount')) $stat_fb=fc_feedcount();print $stat_fb ?>人;共计
    < ?php print $stat_or+$stat_fb;?>人订阅。

    至于进一步的美化就需要您自己设计css了,呵呵。