MovableTypeで外部のRSSを取得♪
まぁ、色々とやり方はあるのですが
PHPのMagpieRSSを使って
やってみました。
PHPの導入の仕方は
MovableTypeでPHPを使う♪
でも見て下さい。(導入ってほどではないけど・・・)
で、MagpieRSSで検索すると色々やり方は出てくるのですが
ちょっといじったりしたのでその辺も含めて・・・
- http://magpierss.sourceforge.net/ から MagpieRSSをダウンロード
- magpierss-***.tar.gz を解凍
-
拡張子が .inc のファイルと extlib フォルダを 適当な場所にアップロード
解説サイトなどだと分かりやすいように
index.phpと同じ場所におく
と、書かれてますが、どこでも平気です。
(俺はrssというディレクトリを作ってそこにぶち込みました。) - 上記アップロードしたディレクトリにcacheという名前のディレクトリを作る
で、まぁメインページにゴリゴリ書いても動くのですが、
なんとなく嫌なので別ファイルに書いてそれをアップします。
例えばrss.phpとかファイルを作ってその中に
<?php
require_once 'rss/rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'http://d.hatena.ne.jp/Yoshiori/rss';
$rss = @fetch_rss($url);
if ($rss && !$rss->ERROR) {
drawRSS($rss);
}else{
echo "取得できませんでした。";
}
function drawRSS($rss){
$items = array_slice($rss->items, 0, 10);
echo "<ul>\n";
foreach ($items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "utf-8", "auto");
$url = $item[link];
$description = $item[description];
$description = mb_convert_encoding($description, "utf-8", "auto");
echo "<li><a href=\"$url\">$title</a></li>\n$description";
}
echo "</ul>\n";
}
?>
って書いて好きなところにアップロード。で、メインページのテンプレートの読み込みたいところに
<?php
require("rss.php");
?>
って書いて再構築すればOKあ、require()の中身には
rss.phpをアップした場所を書いてね♪
ちなみにソースを少しだけ解説すると・・・
require_once 'rss/rss_fetch.inc';これで、まずMagpieRSSを読み込んでます。
$url = 'http://d.hatena.ne.jp/Yoshiori/rss';ここで読み込みたいRSSを指定。
$rss = @fetch_rss($url);
if ($rss && !$rss->ERROR) {
drawRSS($rss);
}else{
echo "取得できませんでした。";
}
ここでfetch_rss()でrssを読み込んでるのですが、関数の頭に@をつけてエラーメッセージを表示しないようにしてます。
で、その後のif分でエラーかどうかを判別して
エラーだったら「取得できませんでした。」と表示してます。
$items = array_slice($rss->items, 0, 10);ここでitemの配列を取得してるのですが、
array_slice()を使って10個だけ持ってきてます。
全部取得したい場合は
$items = $rss->items;とか、適当に代えちゃってください。
ちなみに読み込んでるRSSのタイトルを表示したいとか個別の更新時間が欲しいとかは
$rss->channel['title'] $item['dc']['date']こんな感じで取得できるので、
その辺はマニュアル見てください。
追記:
文字化けする人は
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
の部分を自分のサイトの文字コードに変えてね♪