あらかじめ日記

雑記とかブログで使えるスクリプトとかテクニックとか。その他、音楽やアニメ、漫画の話題とかも。

livedoor相互RSSのフィードをjQueryを使ってランダム表示にする

livedoor相互RSSを利用している人で、1つのチャンネルに複数のフィードを登録している人は多いでしょう。自分もその1人です。

そして設定画面には、フィードの表示順を変更する箇所はないので恐らく、各フィードの更新日付順だろうと思われます。

ここで今更ながら、表示順が配信元によって偏りがある(特定の配信元が良く上位にいる)事に気づきました。

そう、表示順が更新日付だとすると、配信元によっては最新記事ではなく人気記事であったり、ある程度記事のアクセス数などを加味した配信内容になっている可能性があって、そうであると常に最新を配信しているRSSが配信の上位に来やすくなるのです。

これだと、アクセスを送るのに偏りがでてしまうのでは(特に表示高さを固定にしてスクロールバー制御している場合は、ほぼ表示領域以下にしか出てこなくなる)、、と思ったことがきっかけです。

チャンネル自体を細かく分けることも考えましたが、チャンネル単位で広告のフィードが表示されるので、できるだけチャンネルを少なくしたい。

じゃあ、フィードを並び替えてしまおう、と言う訳です。


ランダム表示のやり方は以下のサイトを参考にして、livedoorの相互RSS用に手を入れてみました。

www.finefinefine.jp


以下がサンプルコードです。

※本プログラムによって発生した問題に関して一切責任を負えませんので、あくまで使用は自己責任でお願いします。

$(document).ready(function() {
 $('ul.blogroll-list-wrap').each(function(){
  var arr = [];
  $(this).children(':not(.blogroll-ad-text)').each(function() {
   arr.push($(this));
   $(this).remove();
  });
  arr.sort(function() {
   return Math.random() - Math.random();
  });
  for(i=0; i < arr.length; i++) {
   $(this).append(arr[i]);
  }
 });
});

一応、ちゃんと広告用のフィードは先頭のままにするように条件を加えて、それ以外の各フィードを親から一旦削除、ランダムに並び替えた後、再設定しています。


これで、アクセスを送るのに偏りがなくなるかなぁ。

良かったら、お試しください。