MagpieRSSでサイトにRSSリーダーを埋め込む

職場での要求で「特定のカテゴリのみ携帯サイトのあるページの一部分だけに表示してくれ」ということがあったのでメモ。

職場のサイトがWordPress(以降WP)で製作されているので、WPの持つカテゴリ別Feedを使って表示させることにしました。
単純なRSSリーダがないかなと探していたところ、こんなのがありました。

<?php foreach(simplexml_load_file(‘FeedのURL’)->entry as $it) echo $it->content ?>

もう少し細分化されたものは「2 8 6: PHP5 で RSS リーダを簡単に実現。」のようなこともできるようです。
PHP5限定とのことで、ちょうどサーバのPHPが5だったので試したのですが、エラーレポートもなく真っ白で表示されず、ものぐさ方針は見事に崩れ去りました。

で、他に何かないかなと探していたところ、結局ちらっと見たときにややこしそうだなと避けていたMagpieRSSにたどりついてしまいました。

MagpieRSSは自前でRSSパーサを持つPHPスクリプトで、これ本体と表示用のスクリプトを書けばRSSリーダーとして機能します。基本的には単一のFeedしか読めませんが、表示用スクリプトがPHPなので配列に入れたFeedのURLをループさせてやれば複数のFeedを読ませることもできるようです。今回読ませるFeedは一つだけなので、今回はやりません。

やりかたは以下のとおりとなります。なお、今回はMagpieRSS 0.72を使用しました。

  1. Magpie RSS – PHP RSS Parserより、MagpieRSSのダウンロード・解凍
  2. 解凍したフォルダ名を「magpie」に変更(仮、任意)
  3. magpieフォルダをサーバにアップロード
  4. magpieフォルダ以下にcacheフォルダを作成、属性を777(書込可能)にする

下準備はこれで完了です。実質アップロードに必要なものはrss_*.incファイルとextlibフォルダでいいようです。

次に表示させるためのPHPスクリプトを作成します。php.iniの設定によって文字コードが違うので、スクリプトの文字コードをあわせてください。
ここではEUC-JPの設定で進めていきます。

<?php
    error_reporting(E_ERROR);    //エラーレポートを表示しない
    require_once ‘magpie/rss_fetch.inc’;
    $url = ‘FeedのURL’;    //FeedのURL
    if($rss = fetch_rss($url)){    //Feedがなければ終了
        $title = $rss->channel[‘title’];
        $title = mb_convert_encoding($title, “EUC-JP”, “auto”);
        echo “<h4>$title</h4>\n”;
        $rss->items = array_slice($rss->items, 1, 5);    //Feedの表示数(左の場合だと5件表示)
        echo “<ul>”;
        foreach ($rss->items as $item ) {
            $title = $item[title];
            $title = mb_convert_encoding($title, “EUC-JP”, “auto”);
            $url   = $item[link];
            echo “<li>$title</li>\n”;
            $description = $item[description];
            $description = mb_convert_encoding($description, “EUC-JP”, “auto”);
            echo “<li>$description</li>\n”;
        };
        echo “</ul>”;
    }
?>

コードのベースは「MagpieRSS 使ってみた – Spherical-moss.net」から引用しています。タグはulベースですが、この辺は適当に変えても問題ありません。

次に、MagpieRSSの設定ファイルを一部変更します。

 rss_fetch.inc編集

【342行目あたり変更】キャッシュの無効
define(‘MAGPIE_CACHE_ON’, false);
【358行目あたり変更】文字化け対策
define(‘MAGPIE_OUTPUT_ENCODING’, ‘UTF-8’);

MagpieRSSは定番RSSリーダーらしいので、独自に開発するよりこれの使い方を知っておいた方がいいでしょうね。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中