Amazon.co.jp ベストセラー TOP10(1時間毎自動更新)

2005Apr11

サイトにRSSを埋め込んで表示させる方法

nJOY」のトップページにこのブログの最新記事を埋め込みたいなぁと思い、色々とネットを検索して使えそうなものを何個か見つけました。

まず一番最初に試したのは「大黒屋本舗」さんが公開されている「jsRSS++」。
RSSの取得等にCGIを、表示にはJavaScriptを使うというもの。
で、結果は文字コード処理が上手く出来ていないようで文字化け。使用するのはあえなく断念。

その次に試したのが「レッツPHP!」さんが公開しているPHPで処理する「RSSブロガー」。
結論から言うと、サーバーがセーフモードで動いている為、うちでは動作しないという事が判明したので、使用を断念。

そして最後に行き着いたのが「MagpieRSS」、諦めかけていたけれど上手くサイトのトップページに表示された時は、本当に嬉しかったぁ。最初の2つが上手くいかなかったからなおさら。
設置に際しこちらの日本語解説ページが役に立ちました。

サーバーで PHP が使えないといけなかったり、処理できる RSS が RSS0.9 と RSS1.0 のみとか少し制限もありますが、それらを差し引いてもかなり使えます。
出力は短なるテキストなので、スクリプトをいじればカスタマイズも簡単ですしね。
どんな風に動作しているかは nJOY のトップページを参照(ページ右側の「ブログ最新記事」欄)。

続き開始

上記のページに詳細に書かれていますが、自分用のメモも兼ねて設置方法(Jcode.php を使う方法)を書いておきたいと思います。

必要なもの

  • magpierss-0.61.tar.gz(文字化けするので最新版はNG)
  • 上記解説サイトから PHP のスクリプト
  • jcode_1.35a.zip

設置方法

1) 解説サイトからPHPスクリプトをコピーして、適度に修正。拡張子を「.php」にして保存。
【例:rss.php】
<?php
require_once 'rss_fetch.inc';
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$url = 'http://i-njoy.net/blog/?mode=rss';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
//JcodeConvert($str, $from, $to)
//0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
$title = JcodeConvert($title, 4, 2);
foreach ($rss->items as $item ) {
$title = $item[title];
$title = JcodeConvert($title, 4, 2);
$url = $item[link];
echo '<li><a href="'.$url.'">'.$title.'</a></li>';
}
?>
修正が必要なのは青字になっている部分(「RSSのURL」と「文字コード変換」)。
文字コードについてはうちの場合、読み込む RSS が UTF-8 でそれを Shift-JIS に変換したいので「4, 2」。
どの文字コードがどの数字かはコメント行の赤字部分を参照。

2) MagpieRSS を解凍(「Lhaplas」を使用。tar.gz を解凍できる物なら何でも可。)

3) jcode_1.35a.zip を解凍

4) 解凍したファイルの中から以下のファイルと先ほどのスクリプト(rss.php)をサーバーにアップロード。
【ディレクトリ構成例】
public_html / index.html (トップページ)
  │
  └ magpie / rss.php
     │   jcode.php
     │   code_table.ucs2jis
     │   rss_cache.inc
     │   rss_fetch.inc
     │   rss_parse.inc
     │   rss_utils.inc
     │
     ├ extlib / Snoopy.class.inc
     │
     └ cache (このディレクトリは自分で作る)
「cache」ディレクトリのパーミッションを 707 または 777 に変更する。

5) rss.php に直接アクセスして動作確認。
上記のスクリプトが上手く動作していればリスト化された最新記事が表示されるはず。

6) RSS を埋め込みたいページに SSI で以下の記述を追加
<ul><!--#include file="rss.phpのアドレス" --></ul>
(全角の"<"と">"は本来は半角文字。)

※ SSI が使えない(例えばブログ内に設置したい)場合は Iframe を使えば OK。
(その場合は PHP スクリプトを少し書き変える必要あり。)
もしくはブログが PHP で動いてるのなら、直接記述または include するという手も。

関連記事:

2005/04/18「RSS を出力する掲示板やスクリプト等へのリンク集
2005/04/21「MagpieRSS を応用すると色々出来る

※この記事は修正&加筆して「ぶろぐん・サイト作成ヒント集」にも追加しておきました。
関連記事

| 06:02 PM | comments (7) | trackback (7) |
| サイト作成&運営::覚え書き |

コメント

参考になりました。
また、きます。

| coolweb | URL | 2007/10/12 05:17 PM | MptDUJ8s |

「MagpieRSS」日本語解説ページのPHPのソースをはっつけても読み込めず、こちらのサイトのソースを利用したら読み込めました^^;

大変詳しく載せてくださってありがとうございました!心から感謝いたします><

| frog | URL | 2009/04/16 05:20 PM | 5u4BWh5k |

この記事がお役に立って良かったです。
僕もはじめはかなり苦労した覚えがあります。
巷にある解説は PHP の知識がある事を前提に書かれているものが多かったので。

| CJ | URL | 2009/04/16 07:59 PM | xnOwozF. |

数々のサイトを渡り歩き、やっとこちらのソースで
RSSを表示させることに成功しました!ありがとうございます。
これをもとに複数のサイトの記事を更新時間順に
ソートさせたいのですが、色々試して見ても
表示されなくて参っています。
ぜひアドバイスいただければ幸いです

| siro | URL | 2009/08/01 11:18 PM | tsZ6JrXM |

あまりスマートなやり方ではありませんが、こんな方法ではいかがでしょう。

<?php
require_once 'rss_fetch.inc';
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$feed[] = 'http://i-njoy.net/blog/rss.xml';
$feed[] = 'http://i-njoy.net/blognplus/rss.xml';
$urls = count($feed);
for ($i = 0; $i < $urls; $i++) {
$rss = fetch_rss($feed[$i]);
//JcodeConvert($str, $from, $to)
//0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
foreach ($rss -> items as $item ) {
$entry[] = array(
"utime" => strtotime($item[pubdate]),
"title" => JcodeConvert($item[title], 4, 2),
"url" => $item[link],
);
}
}
rsort($entry);
$count = count($entry);
for ($i = 0; $i < $count; $i++) {
echo '<li><a href="'.$entry[$i][url].'">'.$entry[$i][title].'</a></li>';
}
?>

RSS2.0 形式で動作確認。
読み込む RSS の文字コードがバラバラだと文字化けしますので、その場合はスクリプトを多少工夫する必要があります。

RSS を追加する場合は
$feed[] = "";
を書き足していくだけです。

| CJ | URL | 2009/08/03 10:32 PM | pAWXWe0c |

注意書きをきちんと読まずに、うっかりmagpierssの最新版をダウンロードしてしまって見事はまりました。
0.61をダウンロードしなおして上手く行きました。

ありがとうございます。非常に役立ちました。

| 地元密着なび・シンタニ | URL | 2010/06/21 11:33 AM | Cbbsqah. |

最新版の MagpieRSS でも、改造する事で日本語が文字化けせずに使えるらしいです。
一度きちんと調べて、新しい記事でも書きましょうかね。

| CJ | URL | 2010/06/21 09:48 PM | pAWXWe0c |

コメントする(半角1000文字まで)







この記事のトラックバックURL

※ 言及のないトラックバックは拒否される事があります(トラックバック・ポリシー

トラックバック
Magpieを導入してみる

常々から思っていた「MTの新着情報をTopPegeに表示させる」を決行してみる。...

| 俺様パンチは書くことがあるのか!? | 2009/03/22 08:59 PM |

PHPを利用してRSS情報を取得する。

MT等のブログツールを使用せずにRSSを配信しているサイトは沢山あります。 私の...

| GOCHADER | 2007/07/05 08:30 PM |

MagpieRSSを使ってみた

この間から勉強しつつ、メインサイトの方をphpで色々と書き換えています。その時に見つけたMagpieRSSを使って、このブログの最新記事(一部)をメインサイトに表示させてみました。エラーや文字化けに悩まされつつ、nJOY BLOGさんやProcess 2さんのスクリプトを...

| md style blog | 2006/06/13 11:51 PM |

MagpieRSS

本家の「ひな。小屋」のトップに、この日記の最新情報を載せるにあたって、以下のサイトを参考にさせていただきました。やっと思い通りの表示になりました。ありがとうございま

| ひな。小屋:にっき | 2006/01/19 11:02 AM |

エラってる、エラってる!

からまんのトップページには、ここのブログの最新投稿が5件表示されるようになっておるのですが、コレにはMagpie RSSなるものを使っておりますです。RSSパーサーってなんだ?設置方法はこちらのnJOY BLOGさんの記事を参考にさせていただきました。サンプルスクリプトはU

| からまんブログ | 2005/08/04 11:54 PM |

Google Mapsに天気予報追加、あとトラックバック

前回作ったブログ(HTMLページ)貼り付け用Google Mapsスクリプトに天

| TEDDY-G本家 | 2005/07/19 04:54 PM |

はてなブックマークを埋め込んで表示する

ようやく、はてなブックマークの埋め込みができました。 はてなブックマークに記事を...

| へたれラボラトリー | 2005/06/18 11:25 PM |

メニュー

BlognPlus 用モジュールをお探しですか?
BlognPlus モジュール」カテゴリーから最新情報を見る事ができます。また「ぶろぐんヒント集」に全モジュールの解説ページがあります。

nJOY

攻略最終更新日:
2010年07月25日

最新記事

スポンサード リンク

人気記事

カテゴリー

トラックバック

コメント

ブログ記事検索