mtde.info

Movable Type Developers Express

外部のサイトのFeedを受信してリストを生成する(1)

2008年2月19日 00:14 | Writer: apstar | 記事本文

外部のサイトのフィード情報を受信してリストを作成するサンプルです。

この手法では、ブログの再構築をしなくても、ページを観覧した際に、常に最新の情報を取得できます。

必要なもの

以下のファイルが必要です。

rssv.php、rssv2.phpの入手先や詳しい資料は以下サイトです。

RSS.php、Parser.php、PEAR.phpの公式サイトは以下です。

ファイルの設置

以下CORESERVERのs27サーバー場合の例です。

環境により、手順や結果が異なる場合があります。

  1. ブログの設置されている下へ、xmlという名前のディレクトリを作成。パーミッションを701と変更。
  2. そのxmlという名前のディレクトリへ、rssv2.php、RSS.php、Parser.php、PEAR.phpファイルをコピーし、パーミッションを604とする。
  3. .htaccessファイルへ AddHandler application/x-httpd-phpcgi .php と記述する。その.htaccessファイルをxmlディレクトリへコピーする。CORESERVERの場合はこちらも参照してください。
  4. RSSより情報を引っ張ってきて埋め込みたい箇所へ以下のように記述します。以下はsix apartの3種類のFeed情報の取得を列挙してみました。
<?php
include("http://www.mtde.info/xml/rssv2.php?u=http://www.sixapart.jp/movabletype/news/index.xml");
include("http://www.mtde.info/xml/rssv2.php?u=http://www.sixapart.jp/index.xml");
include("http://www.mtde.info/xml/rssv2.php?u=http://www.sixapart.jp/pronet/developers/index.xml");
?>

あとは、再構築すればいいです。

※おなじCORESERVERでも、RSS.php、Parser.php、PEAR.phpをアップロードする必要がない場合もあります。.htaccessの内容も、サンプルが絶対ではありません。

rssv2.phpのカスタマイズ例

rssv2.phpを用い、タイトルだけの表示にしたい場合は、rssv2.phpの中の$descを削除すればいいです。

以下、rssv2.php改造例です。


<?php
require "RSS.php";
//PEAR導入済みの場合↓
//require "XML/RSS.php";

// URL指定
$rdf = $_GET['u'];

$r =& new XML_RSS($rdf);
$r->parse();
if (!$ch = $r->getChannelInfo()) echo "データが取得でけまへん";
$site_title = mb_convert_encoding($ch['title'], "UTF-8", "auto");
$site_title = htmlspecialchars($site_title);
$site_link = $ch['link'];
// ヘッダ
echo <<<A
<h3><a href="$site_link">$site_title</a></h3>
<ul>
A;

$num = ($_GET['n']) ? $_GET['n'] : count($r->getItems());
for ($i=0; $i<$num; $i++) {
  $val = $r->getItems();
  $title = mb_convert_encoding(strip_tags($val[$i]['title']), "UTF-8", "UTF-8,EUC-JP,SJIS");
  //$desc = mb_convert_encoding(strip_tags($val[$i]['description']), "UTF-8", "UTF-8,EUC-JP,SJIS");
  $link = htmlspecialchars($val[$i]['link']);
  $date = $val[$i]['dc:date'];
  // 内容
  echo <<<B
<li><a href="$link">$title</a></li>
B;
}
//フッタ
echo <<<C
</ul>
C;
?>

このページにサンプルコードを貼った結果

Six Apart - Movable Type News

Six Apart - News

技術情報提供ブログ

Feed関連サンプル

2008 mtde.info