Under the Bridge

a Picture of the Late Him

外部ブログのRSSを自サイトへ読み込み

2008年1月 5日 22:50 | Writer: yoshi | 記事本文 | コメント(7) | トラックバック(0)

「外部ブログのRSSを読み込み自サイトへ読み込み」ということをやってみた。やっていること自体は難しくはないが、設定関連でちょっとつまづいた。覚え書きとして。

なお、このブログ(Under the Bridge)は、CORESERVERに存在する。.htaccessやパーミッションについても触れておこう。

出力結果

ためしに、シックス・アパートの3つのRSS+ここのRSSとAtomを読み込んでみた。

Six Apart - Movable Type News

Six Apart - News

技術情報提供ブログ

Under the Bridge

データが取得でけまへん

    必要なもの

    以下のファイルが必要となった。

    • rssv2.php
    • RSS.php
    • Parser.php
    • PEAR.php

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

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

    ファイルの設置

    以下わたしの場合(CORESERVERです)。

    1:ブログの設置されている下へ、xmlという名前のディレクトリを作成。パーミッションを701とした。

    2:そのxmlという名前のディレクトリへ、rssv2.php、RSS.php、Parser.php、PEAR.phpファイルを放り込む。パーミッションを604とした。

    3:.htaccessファイルへ AddHandler application/x-httpd-phpcgi .php と記述。xmlディレクトリへ放り込む。→参照

    4:RSSより情報を引っ張ってきて埋め込みたい箇所へ以下のように記述。以下は3サイトのRSS取得を列挙してみた。

    <?php
    include("http://www.apstars.com/blog/xml/rssv2.php?u=http://www.sixapart.jp/movabletype/news/index.xml");
    include("http://www.apstars.com/blog/xml/rssv2.php?u=http://www.sixapart.jp/index.xml");
    include("http://www.apstars.com/blog/xml/rssv2.php?u=http://www.sixapart.jp/pronet/developers/index.xml");
    ?>

    5:再構築すればOK。

    タイトルだけでいいのに、という場合。ほか

    rssv2.phpを用い、タイトルだけの表示にしたい場合は、rssv2.phpの中の$descを取っ払えばOK。

    というか、なるべくvalidで行きたい場合

    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;
    ?>
    

    トラックバック(0)

    このブログ記事を参照しているブログ一覧: 外部ブログのRSSを自サイトへ読み込み

    このブログ記事に対するトラックバックURL:

    コメント(7)

    @Style (2008年1月 6日 17:47)

    .htaccessファイルは不要です。phpで動くはずですよ!

    yoshi (2008年1月 6日 18:01)

    >.htaccessファイルは不要です。phpで動くはずですよ!
    今試したんですが、.htaccessファイルをリネームするとデータが取得されなくなります...

    @Style (2008年1月 6日 18:41)

    すみません。.htaccessファイルは必要でした。

    php_flag allow_url_fopen on
    php_flag allow_url_include on

    phpのままで動きます。

    yoshi (2008年1月 6日 18:48)

    今試しました。
    >php_flag allow_url_fopen on
    >php_flag allow_url_include on
    なぜか、駄目なようです。
    環境の違いでしょうか...

    追伸:ついったーにもポストしましたが、カスタムフィールド使ったらテスト環境がぶっ壊れました...がっくりです。

    @Style (2008年1月 9日 04:00)

    自分の所を調べてみたんですが、CORESERVERではRSS.php、Parser.php、PEAR.phpはアップロードする必要はないようですよ。

    yoshi (2008年1月 9日 08:27)

    うちはCORESERVERのs27ですが、こちらは無いと駄目(RSS.php、Parser.php、PEAR.php)のようです。単にPEARがインストールされてないのだと思いますが...。詳しく調べたわけではありません。

    yukit (2008年8月29日 13:30)

    画像とかも読み込めたりするのでしょうか?

    コメントする






    Categories
    Entries
    Feed
    スポンサードリンク

    parts

    フィードメーター - Under the Bridge

    あわせて読みたい

    なかのひと

    2008年4月5日開催、MT4LP5

    2008 yoshi(apstar)