免插件活跃链接与活跃好友

之所以写这个标题,是想将友情链接与好友区别开来。

博客是一个圈子,友情链接是一个纽带。而除了友情链接,还有一些未加链接的朋友也会成为常客。相比之下,有些友链的活跃程度还比不上那些未加链接的朋友。

所以有些博客的链接分首页和内页,首页上只显示最近活跃的友链。这个首页显示活跃友链的功能可以通过magic links插件实现。

读者墙早就有非插件版本,用以显示活跃的留言者。

但是这两大块会有交集。友链质量越高,交集就会越大。所以我想将友链与好友区别开来,让友情链接显示活跃友链,读者墙则显示那些活跃的非友链(这些也是未来的友链发展目标)。两者都按照一定时期内(比如通常采用的30天)的留言数目从多到少排列。

在瀚海星尘的侧边栏上已经实现了这一点。只要最近30天内友链留下哪怕一条留言,就会上首页。而则跟大家广泛使用的一样,取30天内留言数的前10名显示,只不过将友链排除掉了。

代码:
< ?php
$counts = $wpdb->get_results("SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH ) AND user_id='0' AND comment_author != 'Vastar'  AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author ORDER BY cnt DESC");
//Vastar是博客所有者,排除掉
$linkcats = $wpdb->get_results("SELECT T1.name AS name FROM $wpdb->terms T1, $wpdb->term_taxonomy T2 WHERE T1.term_id = T2.term_id AND T2.taxonomy = 'link_category'");
 
$i=0;
foreach($linkcats as $linkcat){
	$bookmarks = get_bookmarks('orderby=rand&category_name=' . $linkcat->name);
       	foreach ($bookmarks as $bookmark) {
             $links[$i++]=$bookmark;
        }
}
 
$k=0;
$l=0;
$active_links=array();
foreach ($counts as $count){
  $j=0;
  $c_url = $count->comment_author_url;
  if ($c_url == '') $c_url = 'http://vastars.info';
  foreach ($links as $link) {
        preg_match('@^(?:http://|https://)(?:www.)?([^/]+)@i', $link->link_url, $l_url);
 
        $pattern_url='/'.$l_url[1].'/i';
 
        if (preg_match($pattern_url, $c_url)) {
          $j=1;
          $add=1;
          foreach ($active_links as $active_link) {
            if (preg_match($pattern_url, $active_link)) $add=0;
          }
          if ($add == 1){
            $active_links[$l++]=$c_url;
            $mostactive_l .='<a href="' . $link->link_url . '" title="' .$link->link_description. '" target="_blank" style="color:#848484">' . $link->link_name . '</a>'. ' ';
            }
 
        }
  }
  if ($j == 0 && $k < 10){
  //取前10名
    $k++;$mostactive_f .='<a href="'. $c_url . '" title="' . $count->comment_author . ' ('. $count->cnt . 'comments)"  target="_blank">' . get_avatar($count->comment_author_email, 35) . '';
  }
}
$mostactive_f='<h4>Active Friends</h4>'.$mostactive_f;
$mostactive_l='<h4>Active Links</h4>'.$mostactive_l;
echo $mostactive_f;
echo $mostactive_l;
?>
最终的效果:

Related posts



27 comments. Leave a comment

  1. 古博 说道:

    我留出一大块侧边栏空间给友情链接 :wink: 因为自己也经常想到博友的站上看看,所以倒不需要这个插件和功能。
    已经单方面加上博主的链接:)

  2. winw 说道:

    是放在侧边栏吧,我也想折腾一个呢。

  3. 朵未 说道:

    呵呵,你这个思路不错。 :wink:

  4. Code之行人 说道:

    呵呵,这个弄得不错

  5. 飞猪 说道:

    我一直都是内么活跃。。 :)

  6. zchiy2k 说道:

    这个改版不错,提高了互动的积极性啊~
    现在连博客圈的友链也越来越像SNS发展了,哈哈

  7. 人好哇! 说道:

    现在研究无插件实现XXX的人越来越多了啊,很多博友可以享福了,哈哈~插件愈多愈慢的道理相信大家也懂的

  8. 小飘 说道:

    这个不错,感觉比较公平。。

    我的博客这两天老是500,杯具。。。

  9. 疾风 说道:

    好东西 可以整合懂啊我的站上去 哈哈

  10. 绝版黑色 说道:

    其实感觉就是读者墙 .

  11. skywing 说道:

    这个功能还是不错的 :mrgreen: 另外提醒你一下,你的博客在the world浏览器中边栏的排版有问题 :!:

    • Vastar 说道:

      多谢再次提醒。我对这种兼容性问题束手无策。而且我也没有世界之窗,不知道乱成怎样了。话说我的IE下都没问题….

  12. 说道:

    嘿嘿,我来活跃一下。

  13. BoKeam 说道:

    把这个放里面是不是就你那种效果?

    • Vastar 说道:

      这个段代码只能实现文中图片上的活跃链接和活跃好友的输出。如果你所指的的是我侧边栏上的tab切换效果,则还要进一步处理。
      看参照这篇文章:http://immmmm.com/jquery-tab-switch-code-improved.html

  14. 流年 说道:

    这个很多人都在用了

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

Comment

You may use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>