Twitterにリンクをつける
前回は.getJSON()メソッドを使い、
以前、
URLにリンクをつける
まずは文中に含まれるURLにリンクをつけてみましょう。文中からURL部分だけを見つけるために、
/(http:\/\/[\x21-\x7e]+)/gi
「[\x21-\x7e]」
これを.replace()メソッドを使い置換するサンプルをみてみましょう。
jQuery(function($){
$('li','#demo').each(function(){
var txt = $(this).text();
//URLをリンク付きに置換
txt = txt.replace(/(http:\/\/[\x21-\x7e]+)/gi,'<a href="$1">$1</a>');
$(this).html(txt);
});
});
これでURL部分にリンクがつきます。
「<a href="$1">$1</a>」
hashタグにリンクをつける
次にhashタグにリンクをつけてみます。Twitter上の発言でつけたhashタグは、
例えば
http://twitter.com/#search?q=%23jQuery
#jQueryの検索をすると、
さて、
/#(\w+)/g
数字とアルファベットだけでいいので、
それではhashタグをリンク付きに置換するサンプルを見てみましょう。
jQuery(function($){
$('li','#demo').each(function(){
var txt = $(this).text();
//hashタグをリンク付きに置換
txt = txt.replace(/#(\w+)/g,'<a href="http://twitter.com/#search?q=%23$1">#$1</a>')
$(this).html(txt);
});
});
これでhashタグに、
@ユーザー名にリンクをつける
最後に、
/@(\w+)/g
jQuery(function($){
$('li','#demo').each(function(){
var txt = $(this).text();
//ユーザー名(スクリーン名)をリンク付きに置換
txt = txt.replace(/@(\w+)/g,'<a href="http://twitter.com/$1">@$1</a>');
$(this).html(txt);
});
});
これで各種、
プラグイン化したものに導入してみる
(function($){
$.fn.twLine = function(options){
var c = $.extend({
//ユーザーIDもしくはスクリーン名
user: null,
number: 10
},options || {});
var twiUrl = 'http://twitter.com/';
$(this).each(function(){
var self = $(this);
// ユーザー名がなければ処理を終了する
if( !c.user ) {
return false;
}
// loading文字列とJSONの中身を一覧で表示するためのul要素を入れておく
self.append(
'<div class="loading"><img src="images/loading.gif" width="32" height="32" alt="" />loading...</div>',
'<ul/>'
);
// JSONの取得
$.getJSON('http://twitter.com/statuses/user_timeline/' + c.user +'.json?callback=?',function(data){
// loading文字列を消去
$('.loading', self).remove();
// ポストがひとつもなかった場合
if( data.length < 1 ) {
$('ul', self).append('<li>投稿がありません。</li>');
return false;
}
// item毎に・・・
$.each(data , function(i , items) {
// 指定した数を超えた場合は終了する
if( i > (c.number - 1) ) {
return false;
}
var txt = items.text;
// 各種リンク付きに置換する
txt = txt.replace(/(http:\/\/[\x21-\x7e]+)/gi,'<a href="$1">$1</a>')
.replace(/#(\w+)/g,'<a href="'+twiUrl+'#search?q=%23$1">#$1</a>')
.replace(/\@(\w+)/g,'<a href="'+twiUrl+'$1">@$1</a>');
// itemの中のtextを抜き出してulに追加する
$('ul', self).append(
$('<li/>').html(txt)
);
});
});
});
}
})(jQuery);
jQuery(function($){
$('#demo').twLine({
user: '32262053'
});
$('#demo2').twLine({
user: 'h2ham',
number: 5
});
});
これでプラグイン中でも発言にリンクがついて表示されるようになりました。
プラグインをhashタグ一覧表示に
今回の最後に、
(function($){
$.fn.twLine = function(options){
var c = $.extend({
//検索するhashタグ
hash: null,
number: 10
},options || {});
var twiUrl = 'http://twitter.com/';
$(this).each(function(){
var self = $(this);
// ユーザー名がなければ処理を終了する
if( !c.hash ) {
return false;
}
// loading文字列とJSONの中身を一覧で表示するためのul要素を入れておく
self.append(
'<div class="loading"><img src="images/loading.gif" width="32" height="32" alt="" />loading...</div>',
'<ul/>'
);
// JSONの取得
$.getJSON('http://search.twitter.com/search.json?q=%23' + c.hash +'&callback=?',function(data){
var results = data.results;
// loading文字列を消去
$('.loading', self).remove();
// ポストがひとつもなかった場合
if( data.length < 1 ) {
$('ul', self).append('<li>投稿がありません。</li>');
return false;
}
// item毎に・・・
$.each(results , function(i , items) {
// 指定した数を超えた場合は終了する
if( i > (c.number - 1) ) {
return false;
}
var txt = items.text;
// 各種リンク付きに置換する
txt = txt.replace(/(http:\/\/[\x21-\x7e]+)/gi,'<a href="$1">$1</a>')
.replace(/#(\w+)/g,'<a href="'+twiUrl+'#search?q=%23$1">#$1</a>')
.replace(/\@(\w+)/g,'<a href="'+twiUrl+'$1">@$1</a>');
// itemの中のtextを抜き出してulに追加する
$('ul', self).append(
$('<li/>').html(txt)
);
});
});
});
}
})(jQuery);
jQuery(function($){
$('#demo').twLine({
hash: 'jQuery'
});
$('#demo2').twLine({
hash: 'plugin',
number: 5
});
});
先程までのプラグインとほとんど同じコードで表示ができます。変更したのは、
自分のサイトにTwitterのタイムラインを表示するだけでなく、