2010-7-25 Sunday

PHPを用いて「個別記事に対してのTwitter上でのつぶやき」をブログコメントっぽくまとめて表示させる

 最近なんとなく気になっている、ブログ記事の下に「この記事へのつぶやき」といった感じでTwitterのコメントを各ユーザのアバター付きで並べている、あれ。どこからどう持ってきて表示させているのかよくわからないまま今日に至り、雪印コーヒーを飲みながら重い腰を上げて調べてみました。
 で、どうも多くのところでは、WordPressにTopsy Widgets、あるいはBackType Connect Pluginというのをインストールして表示させているらしいということがわかったんですが、当ブログはWordPressと名前は付いているものの、XOOPS上で動いているイレギュラーなものでインストールできないことは間違いなく、じゃあどうすればということで、いろいろやったらなんとかなって嬉しくなったので、PHP5が使えるならMovable Typeでも古いWordPressでも関係なしにどのブログツール上(あるいはHTMLのみで書かれたページ)でも多分表示されるであろうという方法を順を追って説明していきます。

 まず、下準備として『BackType』というサイトでユーザ登録を行います。必要なのはメールアドレスと希望するIDですが、最近のサイトとしては珍しくメールアドレスの認証は必要ありません。入力して登録したら即ログイン状態です。この暑い中、話が早くて助かります。次にDevelopersへアクセスします。ログインしていればYour API keyというのが英数字で表示されているはずです。
 次に、

	
<?php
 if ( isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] == 'on' )
 {
     $protocol = 'https://';
 }
 else
 {
     $protocol = 'http://';
 }
	
$url  = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$feed_url = "http://api.backtype.com/tweets/search/links.xml?q=$url&key=発行されたkey";
$xml = simplexml_load_file("$feed_url");
foreach ($xml->tweets->entry as $entry) {
echo "<p style=\"float:left;margin-right:10px;margin-top:-1px;\"><a href=\"http://twitter.com/" . $entry->tweet_from_user . "/status/" . $entry->tweet_id ."\"><img src=\"" . $entry->tweet_profile_image_url . "\" width=\"48\" height=\"48\" alt=\"ツイートへのリンク\" /></a></p>";
echo "$entry->tweet_text";
echo "<p style=\"text-align:right;\">","<span style=\"padding-right:0.5em;font-weight:bold;\">","<a href=\"http://twitter.com/" . $entry->tweet_from_user . "\">","$entry->tweet_from_user","</a>","</span>","$entry->tweet_created_at","</p>";
echo "<br style=\"clear:both\" />";
}
	
if(empty($entry)){
echo "<p style=\"text-indent:1em;\">つぶやかれていないか、既に消えてしまっているようです。</p>";
}
?>

	

 上記のコードを自サイトの表示させたい場所に貼ってください。ブログツール上で表示させたい場合は個別記事表示用テンプレートのどこかということになりますね。「発行されたkey」と書かれたところは忘れずにYour API keyの英数字と置き換えてください。表示例はこの記事の下にあります。多分、僕のTwitterのアイコン(フェレットの顔)と「[サイト更新]PHPを用いて~」という文字列が表示されているはずです。記事をどんどん遡っていけば、ちゃんと現在表示されている記事に言及したツイートのみが表示されているのがわかると思います。

 レイアウトはユーザのアバターにツイートへのリンクを貼って、フロートして右につぶやき、右下にユーザのホームへのリンクとツイートされた日時という風にしていますが、細かい部分は完全にうちのサイト仕様なので自分のサイトのデザインに合わせて調整してください。

 やっていることはBackTypeのAPIを使って記事のURLを検索し、出力されたデータからアバターと投稿日時(多分アメリカのどこかしらの標準時間が基準)、ユーザIDとツイート番号っていうんでしょうか、それらを取り出して並べるっていうことなんですが、BackTypeのAPIは一日で1000回しか使えないそうなので読者の多いブログでやると問題が発生するかもしれません。TwitterのAPIでも同じことができるような気がするんですが、改めて調べるのが面倒なので当面、うちはこれでいきたいと思っています。

[追記]

 その後の調べで、JavaScriptであっさり実現できるらしいということがわかりましたがせっかくなので使い続けることにします。

参考記事

posted by kudok @   | Permalink

>> 次の記事 穏やかな気持ちで長くサイトを続けるための三つの約束事
<< 前の記事

関連記事

  • ありません

19 queries. 0.067 sec.
Powered by WordPress Module based on WordPress ME & WordPress

▲このページの先頭へ戻る